Variables(变量)
声明变量并赋值
var name = "BcwhiteLei"
//变量是一个引用。上面名字为name的变量引用了 一个内容为 “BcwhiteLei” 的 String 对象。
Default value(默认值)
没有初始化的变量自动获取一个默认值为null,上篇的重要规则说过所有类型都是对象类型并集成于Object
类。所以哪怕是数字类型的变量没有初始化也是null,而不是类似于Objective-C等语言,默认数字类型有默认值。
int lineCount;
assert(lineCount == null);
// Variables (even if they will be numbers) are initially null.
注意: 在生产模式assert()语句被忽略了。在检查模式assert(condition)会执行,如果条件不为 true 则会抛出一个异常。
//同样的这里和Objective-C也不一样,OC的assert是debug和release都生效。
Optional types(可选的类型)
在声明变量的时候,你可以选择加上具体 类型:
String name = 'BcwhiteLei';
添加类型可以更加清晰的表达你的意图。 IDE 编译器等工具有可以使用类型来更好的帮助你, 可以提供代码补全、提前发现 bug 等功能。
Final and const
如果你以后不打算修改一个变量,使用final或者const。 一个 final 变量只能赋值一次;一个 const 变量是编译时常量。 (Const 变量同时也是 final 变量。) 顶级的 final 变量或者类中的 final 变量在 第一次使用的时候初始化。
注意: 实例变量可以为final
但是不能是const
;
实例:
final name = "BcwhiteLei";
final String name = "BcwhiteLei";
//name = "Baihaotian";// Uncommenting this causes an error
const
变量为编译时常量。 如果 const
变量在类中,请定义为static const
。 可以直接定义 const
和其值,也 可以定义一个 const
变量使用其他 const
变量的值来初始化其值。
const bar = 1000000; // Unit of pressure (dynes/cm2)
const atm = 1.01325 * bar; // Standard atmosphere
const
关键字不仅仅只用来定义常量。又可以用来创建不变的值,还能定义构造函数为const
类型的,这种类型的构造函数创建的对象是不可改变的。任何变量都可以有一个不变的值。
// Note: [] creates an empty list.
// const [] creates an empty, immutable list (EIA).
//[] 构建一个空数组
//const [] 构建一个空的不可变的数组 称为EIA
var foo = const []; // foo is currently an EIA. foo现在是一个空不可变数组EIA
final bar = const []; // bar will always be an EIA. bar永远是一个空不可变数组EIA
const baz = const []; // baz is a compile-time constant EIA. baz是一个编译时常量
// You can change the value of a non-final, non-const variable,你可以改变一个不是final 不是const修饰的变量
// even if it used to have a const value.尽管他有一个常量值
foo = [];
// You can't change the value of a final or const variable.你不能修改一个被const或者final修饰的变量
// bar = []; // Unhandled exception.
// baz = []; // Unhandled exception.
网友评论