为什么有些 Dart built-in 类型以大写字母(List、Map、String)开头,而其他类型以小写字母(number、int、double、bool)开头?

Why some Dart built-in types start with capital letter(List, Map, String) and others with lower letter(number, int, double, bool)?

它是 Java 血统还是 collection 相关? 有没有一种模式以及 dynamic 类型如何适应它?

历史上 Java 和 C# 等语言将类型分为 2 个主要类别:

  1. 原始类型(intcharboollongdouble 等)
  2. 用户自定义类型(ListMapFutureAnimalCar等)

为了清楚地设置差异,惯例是遵循 CamelCase 即以 user-defined types 的大写字符开头并遵循 pascalCase 对于 primitive ones

dart,就像许多其他功能一样,采用这两种语言的约定。

注意: String 类型长期以来一直是一种特殊情况。 C# 有一个名为 string 的类型和一个名为 String 的别名类型。 Java 但是采用 C++ 哲学,并不将 String 视为原始类型。因此使用 CamelCase。对于字符串 dart 已遵循 java 路径。

PS This GitHub Issue 详细讨论了 String 问题。

Dart 选择此命名是因为来自 Java 的人们熟悉。这就是为什么 intdoublevoidbool 是小写的,即使它们在 Dart 中不是“原始”类型(即使 bool 是比 Java boolean 类型短。) num class 不存在于 Java 中,但它遵循 intdouble 类型以保持一致性。 dynamic 类型可能只是为了方便而小写,因为它实际上是一个非 class 类型。