dart 中 var 和 dynamic 的区别

349人浏览 / 0人评论

如果将变量声明为dynamic,则其类型会随着时间变化:

dynamic a ='abc'; //最初是一个字符串
a = 123; //然后给它分配一个int值
a = true; //然后是布尔

如果将变量声明为var,则一旦分配具体的变量则类型就无法更改:

var b ='abc'; // b是一个字符串,其类型不能更改
b = 123; // 这将无法编译,无法将int分配给字符串变量

但是,如果声明一个var而不进行初始化,那么它将变为动态的:

var a; // 这实际上是一个动态类型
a = 123; //为其分配一个整数
a ='abc'; //为其分配一个字符串
print(a); //打印出abc
小结:

var实际是编译器抛出的语法糖,一旦被编译,编译器就会自动匹配var变量的实际类型,并用实际类型替换该变量的声明,等同于我们在编码时使用了实际类型声明。而dynamic被编译成Object类型,编译器编译时不会对dynamic进行类型检查。

全部评论

晴天下起了小雨
2017-10-01 18:00
很喜欢,果断关注了
wjmyly7336064
2017-10-01 18:00
相当实用,赞美了
橘大佬
2017-10-01 18:00
就是有些细节再到位点就好了…