我知道 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
在本教程中,我发现它说:
但是下面的代码片段会产生一个错误,因为编译器将 b 识别为一个 int ,它被错误地分配了一个 double 值。这是实际的类型检查,也是 Dart 在 JavaScript 上改进的众多方法之一。
诠释 b=7898765;
b = 9.8; // 错误不能将 double 分配给 int
但是,在使用 Dartium 或使用<script src="packages/browser/dart.js"></script>
.
如果我这样做var i = "abc" + 1.5
了,它会抛出一个错误,那么为什么类型错误分配不做同样的事情呢?这是疏忽还是设计选择?如果是后者,原因是什么?
提前致谢。