我刚刚开始学习Dart,并遇到了以下代码
main(){
print(2.0 is int);
print(2.0 is double);
print(int is double);
}
它产生以下输出
true
true
false
我不确定为什么会生成上述输出。 以上输出表明所有整数都可以视为双精度。
我在这里缺少明显的东西吗?任何指针都会有所帮助。谢谢。
答案 0 :(得分:2)
仅当在浏览器中运行代码时,您才能获得此结果。
浏览器无法区分int和double,只知道double,因此Dart在编译为JS时也无法区分它们。
从理论上讲,这是可能的,但是使用自定义类型来维护整数属性的性能损失会非常高。
另请参阅https://webdev.dartlang.org/faq#q-how-are-integers-handled-when-compiled-to-javascript