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

 

 

 

 

 

 

posted @ 2019-10-16 09:52  野猿新一  阅读(85)  评论(0编辑  收藏  举报