变量 (Variables)

2018-10-28  本文已影响0人  黑色的雨天

下面是一个创建变量并初始化它的例子:

var name = 'Bob';

变量存储引用。调用的变量name包含对String值为“Bob” 对象的引用。

name变量的类型被推断为String,但是可以通过指定类型来更改。如果对象不限于单一类型,请按照设计指南指定Objectdynamic类型。

dynamic name = 'Bob';

另一种选择是显式声明可以推断的类型:

String name = 'Bob';

注意:本页面遵循样式指南建议对局部变量使用var而不是类型注释的。

Default value

未初始化的变量的初始值为null。即使是具有数字类型的变量最初也是null,因为数字就像Dart中的其他所有都是对象。

int lineCount;
assert(lineCount == null);

注意:在生产代码中assert()调用被忽略。在开发期间,除非 condition 为真,否则assert(condition)抛出异常。

Final and const

如果您从不打算更改变量,请使用finalconst代替var或替代类型。final变量只能设置一次,const变量是编译时常量。const变量是隐式finalfinal的顶级或类变量在第一次使用时被初始化。

注意:实例变量可以是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,比如上面的baz

可以更改非final的,非const变量的值,即使它曾经有一个const值:

foo = [1, 2, 3]; // Was const []

不能改变const变量的值:

baz = [42]; // Error: Constant variables can't be assigned a value.

有关使用const创建常量值的更多信息,请参见ListsMapsClasses

上一篇下一篇

猜你喜欢

热点阅读