写在前面
本文基本上是将dart官网部分内容进行翻译,没兴趣的请出门左转至Dart的官网,有兴趣的同志请继续阅读本文。
Flutter教程在这里
Final 和 const
如果您从不打算更改变量,请使用final
或const
,而不是var
或类型。 final
变量只能被初始化一次; const
变量是编译时常量。 (const
变量是隐式的final。)final
的顶级变量或者类的成员变量将在第一次使用时初始化。
注意:实例变量可以是
final
的,但不能是const
。
下面是一个创建并设置final
变量的例子:
final name = 'Bob'; // 没有声明类型
final String nickname = 'Bobby'
您不可以修改一个final
变量的值(final
是不可变的。):
name = 'Alice'; // 错误: final变量只能被始化一次。
如果您让变量变成编译时常量,请使用const
。 如果const
变量是class
级别的,则将其标记为static const
。 在声明变量的地方,将值赋给编译时常量,例如数字或字符串文字,const变量或常数上的算术运算结果:
const bar = 1000000; // 压力单位 (dynes/cm2)
const double atm = 1.01325 * bar; // 标准大气压
const
关键字不仅可以声明const
变量。您还可以使用它来创建常量值,以及声明创建常量值的构造函数。 任何变量都可以具有常量值。
var foo = const [];
final bar = const [];
const baz = []; // 等同于 to `const []`
您可以从const声明的初始化表达式中省略const
,就像上面的baz一样。 有关详细信息,请参阅不要冗余地使用const。
您可以改变一个非 final或 非const变量的值,即使它曾经有一个常量值。
foo = [1, 2, 3]; // 曾经是 const []
你不能改变一个const
变量的值:
baz = [42]; // 错误: const变量不能赋值。
内置类型
Dart特别支持以下类型:
- 数字类型
- 字符串
- 布尔值
- 表(lists,也被称作数组)
- 映射(maps)
- 符文(用于表示字符串中的Unicode字符)
- 符号
您可以使用文字初始化任何这些特殊类型的对象。 例如,'this is a string'
是一个字符串值,true
是一个布尔文 值。
因为Dart中的每个变量都引用一个对象 - 一个类的实例 - 您通常可以使用构造函数来初始化变量。 一些内置类型有自己的构造函数。 例如,您可以使用Map()
构造函数来创建Map。