【发布时间】:2016-01-30 04:22:31
【问题描述】:
我知道类型在 Dart 中几乎是可选的,但如果我选择指定变量类型,我希望像 int i = "abc" 这样的赋值会在运行时引发错误。然而,无论是那个还是以下任何一个都不会引发错误,它们只是忽略了类型转换。
String str = "test";
int integer = 5;
double decimal = 1.5;
List list = [1,2,3];
String s = decimal; print(s); // 1.5
int i = str; print(i); // test
double d = list; print(d); // [1, 2, 3]
List l = integer; print(l); // 5
在this tutorial我发现,它说:
但是下面的 sn-p 会产生错误,因为编译器将 b 识别为 int 被错误地分配了 double 值。这是实际的类型检查,也是 Dart 对 JavaScript 进行改进的众多方式之一。
int b=7898765;
b = 9.8; // 错误不能将 double 赋值给 int
但是,在使用 Dartium 或使用 <script src="packages/browser/dart.js"></script> 时,该代码不会对我产生错误。
如果我做var i = "abc" + 1.5,它会抛出一个错误,那么为什么类型错误分配不做同样的事情呢?这是疏忽还是设计选择?如果是后者,原因是什么?
提前致谢。
【问题讨论】: