下面是一个创建变量并初始化它的例子:
var name = 'Bob';
变量存储引用。调用的变量name
包含对String
值为“Bob” 对象的引用。
name
变量的类型被推断为String
,但是可以通过指定类型来更改。如果对象不限于单一类型,请按照设计指南指定Object
或dynamic
类型。
dynamic name = 'Bob';
另一种选择是显式声明可以推断的类型:
String name = 'Bob';
注意:本页面遵循样式指南建议对局部变量使用var
而不是类型注释的。
Default value
未初始化的变量的初始值为null
。即使是具有数字类型的变量最初也是null
,因为数字就像Dart中的其他所有都是对象。
int lineCount;
assert(lineCount == null);
注意:在生产代码中assert()
调用被忽略。在开发期间,除非 condition
为真,否则assert(condition)
抛出异常。
Final and const
如果您从不打算更改变量,请使用final
或const
代替var
或替代类型。final
变量只能设置一次,const
变量是编译时常量。const
变量是隐式final
。final
的顶级或类变量在第一次使用时被初始化。
注意:实例变量可以是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
创建常量值的更多信息,请参见Lists
、Maps
和 Classes
。
网友评论