【发布时间】:2020-06-25 17:38:44
【问题描述】:
在 dart/Flutter 中,所有基本数据类型名称都以小写形式定义
- int
- 布尔
- 双倍等等。
那为什么 string 数据类型变成 String 而不是 string 呢?
【问题讨论】:
-
这个here有问题
在 dart/Flutter 中,所有基本数据类型名称都以小写形式定义
那为什么 string 数据类型变成 String 而不是 string 呢?
【问题讨论】:
来自@Ahmed I. Elsayed提到的github问题,以下是@LRN提供的相关答案 Reference
如果您要保持一致性,真正的问题是为什么 int 不是 诠释。 Dart 一般将类型大写,所以这里的例外不是 字符串,它是 int、double 和 bool(和 void,但那不是 原来是一个真正的类型)。
因此,如果您想要一致性,我们应该将 int 设为 Int。或者也许它 甚至应该是整数,因为我们也不鼓励缩写。
在 Java 中,int 是小写的,而 Integer 是大写的,因为 前者是原始类型,后者是对象类型。飞镖确实 没有那个区别,我们的 int 是一个对象类型,所以我们没有 实际上有任何基于一致性的理由来缩短 int 和 小写。
或者也许有一个原因:int、double 和 bool 实例是 自动规范化。你不能有两个 int 实例 相同的值,但它们并不相同。这是唯一的属性 Dart 是从 Java/C#/JavaScript 原始类型中获取的,它 不适用于字符串(就像它在 Java 和 C# 中也一样)。
Dart 出现这些异常(int、double 和 bool)的真正原因是 因为可用性、用户期望和 一致性。 Dart 被设计成一种实用语言。它重视 一致性,但不以任何代价。熟悉度/用户期望 目标通常受到 Java、JavaScript 和 C# 的影响,它是 被认为具有更好的可用性以使这些类型简短,可识别 并且易于编写。
让 String 成为字符串并不是一个看似值得的权衡。它 如果我们使用字符串,可能会工作得很好 相反,但我们没有。我们现在不会改变它。
(如果我们得到通用类型别名,您可能可以定义自己的 typedef 字符串 = 字符串;。我恳求你不要这样做,因为它不会 提高代码的可读性。从历史上看,Java 的原因 没有类似 C 的 #define 功能是明确的,因为 他们不希望人们用无数的私人方言写作 其他人无法阅读)。
【讨论】:
它实际上旨在为熟悉 Java 的程序员简化约定。
当时,Dart(仍然)非常新鲜和新颖,因此他们希望保持与 Java 等已知和成熟语言相似的语法。它将促进人们的迁移和采用。
您可以在official docs here找到更多实质性信息
【讨论】: