Flutter 从0到入门 ④ Dart 语言-2(mac)

2019-03-26  本文已影响0人  Bc_wh1te_Le1

DartPad(在线Dart编译器)

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.

上一篇下一篇

猜你喜欢

热点阅读