1.Final and const
如果你以后不打算修改一个变量,使用 final 或者 const。 一个 final 变量只能赋值一次;一个 const 变量是编译时常量。 (Const 变量同时也是 final 变量。) 顶级的 final 变量或者类中的 final 变量在 第一次使用的时候初始化。
实例变量可以为 final 但是不能是 const 。
const 变量为编译时常量。 如果 const 变量在类中,请定义为 static const。 可以直接定义 const 和其值,也 可以定义一个 const 变量使用其他 const 变量的值来初始化其值。
2.下面是字符串和数字之间转换的方式:
// String -> int
var one = int.parse(‘1’);
assert(one == 1);
// String -> double
var onePointOne = double.parse(‘1.1’);
assert(onePointOne == 1.1);
// int -> String
String oneAsString = 1.toString();
assert(oneAsString == ‘1’);
// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == ‘3.14’);
3.使用三个单引号或者双引号也可以 创建多行字符串对象。
4.Lists(列表)
var list = [1, 2, 3];
list[1] = 1;
在 list 字面量之前添加 const 关键字,可以 定义一个不变的 list 对象(编译时常量):
var constantList = const [1, 2, 3];
5.Maps
var gifts = {
// Keys Values
‘first’ : ‘partridge’,
‘second’: ‘turtledoves’,
‘fifth’ : ‘golden rings’
};
var nobleGases = {
// Keys Values
2 : ‘helium’,
10: ‘neon’,
18: ‘argon’,
};
使用 Map 构造函数也可以实现同样的功能:
var gifts = new Map();
gifts[‘first’] = ‘partridge’;
gifts[‘second’] = ‘turtledoves’;
gifts[‘fifth’] = ‘golden rings’;
var nobleGases = new Map();
nobleGases[2] = ‘helium’;
nobleGases[10] = ‘neon’;
nobleGases[18] = ‘argon’;
var gifts = {‘first’: ‘partridge’};
gifts[‘fourth’] = ‘calling birds’; // Add a key-value pair
var gifts = {‘first’: ‘partridge’};
如果所查找的键不存在,则返回 null:
var gifts = {‘first’: ‘partridge’};
使用 .length 来获取 map 中键值对的数目:
var gifts = {‘first’: ‘partridge’};
gifts[‘fourth’] = ‘calling birds’;
同样使用 const 可以创建一个 编译时常量的 map:
final constantMap = const {
2: ‘helium’,
10: ‘neon’,
18: ‘argon’,
};
6.Runes
在 Dart 中,runes 代表字符串的 UTF-32 code points。
Unicode 为每一个字符、标点符号、表情符号等都定义了 一个唯一的数值。 由于 Dart 字符串是 UTF-16 code units 字符序列, 所以在字符串中表达 32-bit Unicode 值就需要 新的语法了。
通常使用 \uXXXX 的方式来表示 Unicode code point, 这里的 XXXX 是4个 16 进制的数。 例如,心形符号 (♥) 是 \u2665。 对于非 4 个数值的情况, 把编码值放到大括号中即可。 例如,笑脸 emoji (?) 是 \u{1f600}。
String 类 有一些属性可以提取 rune 信息。 codeUnitAt 和 codeUnit 属性返回 16-bit code units。 使用 runes 属性来获取字符串的 runes 信息。
var clapping = ‘\u{1f44f}’;
print(clapping);
print(clapping.codeUnits);
print(clapping.runes.toList());
Runes input = new Runes(
‘\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}’);
print(new String.fromCharCodes(input));
}
?
[55357, 56399]
[128079]
♥ ? ? ? ? ?