Dart语言入门——var变量声明
先声明后赋值
类似于JavaScript中的var,用var声明的变量可以接收任何类型的变量
void main() {
var v;
v = '野猿新一';
print(v);
v = 100;
print(v);
v = 6.66;
print(v);
v = true;
print(v);
}
运行结果如下
野猿新一
100
6.66
true
声明时马上赋值
需要注意的是如果var声明的变量在声明的同时马上赋某一类型的值,那么该变量就固定该类型,不可再赋其他类型的值,否则会报错
void main() {
var v = '野猿新一';
print(v);
v = 100;
print(v);
v = 6.66;
print(v);
v = true;
print(v);
}
如上代码会报如下错误
A value of type 'int' can't be assigned to a variable of type 'String'.
A value of type 'double' can't be assigned to a variable of type 'String'.
A value of type 'bool' can't be assigned to a variable of type 'String'.
笔者在初学Dart语法的时候看网上的一些文章,说什么dart是强类型语言,在var声明的变量第一次复制时就确定类型了,这是没错,但是贴上的实例代码却是先var声明却未马上赋值的情况,这种情况是赋任何类型的值都可以的。所以网上很多文章也是抄来抄去都没自己验证下就来误导人,所以学编程最好的方法还是要写完代码自己跑一遍。
与dynamic的区别
var变量声明在先声明未马上赋值的情况下,与dynamic声明的变量一样,可以赋任何类型的值,上面第一个示例中把var替换成dynamic后运行结果是一样的
void main() {
dynamic v;
v = '野猿新一';
print(v);
v = 100;
print(v);
v = 6.66;
print(v);
v = true;
print(v);
}
运行结果如下
野猿新一
100
6.66
true
需要注意的是dynamic声明的变量若在声明的同时马上赋值,其类型还是动态的,并不会固定为赋值的类型。这一点和var声明的变量不一样。
void main() {
dynamic v = '野猿新一';
print(v);
v = 100;
print(v);
v = 6.66;
print(v);
v = true;
print(v);
}
运行结果如下,并不会报错
野猿新一
100
6.66
true