变量
定义一个变量并初始化它:
var name = 'Bob';
变量储存引用,一个叫name
的变量包含了一个值为“Bob”的String
对象的引用。
name
变量的类型被推断为String
类型,但是你也可以通过指定类型来改变它。如果一个对象并不只限于一个单一类型,请指定为Object
或dynamic
类型。design guidelines.
dynamic name = 'Bob';
或者显式指定类型推断:
String name = 'Bob';
Note: This page follows the style guide recommendation of using var
, rather than type annotations, for local variables.
默认值
未初始化变量的初始值为null
。甚至数字类型也被初始化为null,因为数字在Dart中也是对象。
int lineCount;
assert(lineCount == null);
Note: assert()
在生产代码中会被忽略. 开发期间 assert(*condition*)
会抛出异常,除非condition 为真. 细节请看 Assert.
Final 和 const
如果你不想改变一个变量, 用 final
或 const
来修饰, 可以代替 var
或者附加在类型前面. 一个final
变量只能被赋值一次;一个const
变量是编译时常量. (Const 变量意味着它也是一个 final.) 一个final
顶级或类变量在它第一次被使用时初始化.
Note: 实例变量可以是 final
但不是const
. Final变量必须在构造函数体之前被初始化— 在定义时, 在构造函数参数后面, 或者在 初始化语句.
下面是如何创建和赋值一个final变量:
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';
你不能改变final变量的值:
name = 'Alice'; // Error: a final variable can only be set once.
使用 const
指定变量为 编译时常量.如果const变量为类变量, 用 static const
标记. 在你定义变量的地方为它赋一个编译时常量的值,例如数字,字符串,一个const变量,或常量的算术运算。
const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere
const
关键字并不仅仅用来定义常量变量。你也可以用它来创建常量值,也可以用来声明创建常量值的构造函数。所有变量都可以有常量值:
var foo = const [];
final bar = const [];
const baz = []; // Equivalent to `const []`
你可以从const
声明的初始化表达式中省略const
, DON’T use const redundantly.
你可以改变非const
和非final
变量的值,即使它有常量值:
foo = [1, 2, 3]; // Was const []
你不能改变常量变量的值:
baz = [42]; // Error: Constant variables can't be assigned a value.
网友评论