Dart变量常量


// 向变量 name 赋值 'uSee',那么 name 就是一个字符串变量
var name = 'uSee';
// 动态变量,通过赋值来指定类型,不像单一变量只能是一种变量类型
dynamic name = 'uSee';
dynamic name = 1;
dynamic name = true;
// 单一类型变量
String name = 'uSee';
默认值
Int lineCount;
assert(lineCount == null); // 真实写代码时不用写 assert 这一行
未初始化的变量的缺省值为 null,就算是数字类型的变量的缺省值也是 null,因为 数字(与Dart中的所有其他内容一样)都是对象
不可更变的量
如果声明一个变量 但是又不想它被再赋值,可以使用 final 或者 const 来修饰
实例 变量可以用 final 声明 而不能使用 const
final 被 final 声明的变量只能在声明的时候赋值一次
final name = 'uSee';
name = 'iSee';
// 无法修改 name 的值
// Error: a final variable can only be set once.

const 是常量, 如果 const 声明是在类中,则需要定义为 static const
可以直接定义一个常量的值,也 可以定义一个常量并使用它来初始化其值。
const bar = 1000000;
const double atm = 1.01325 * bar;
const 不仅仅只用来定义常量,也可以用来定义一个变量的类型,这种类型是不可改变的
var foo = const [];
final bar = const [];
const baz = [];
foo = [1, 2, 3]; // Was const []
baz = [42]; // Error: Constant variables can't be assigned a value.
Dart 的内置变量类型
numbers 数值类型,该类型支持两种子类型 int 和 double
int 整数型,其取值通常位于 -253 和 253 之间
double  64-bit (双精度) 浮点型,符合 IEEE 754 标准
strings 字符串类型,strings是UTF-16代码单元的序列,需要使用单引号或双引号来创建
var s1 = 'Single quotes work well for string literals.';
var s2 = "Double quotes work just as well.";
var s3 = 'It\'s easy to escape the string delimiter.';
var s4 = "It's even easier to use the other delimiter.";
使用$ {expression}方式将表达式的值放在字符串中
var s = 'string interpolation';
assert('Dart has $s, which is very handy.' ==  'Dart has string interpolation, ' +   'which is very handy.');
assert('That deserves all caps. ' +    '${s.toUpperCase()} is very handy!' ==   'That deserves all caps. ' +
        'STRING INTERPOLATION is very handy!');
使用 ”+“ 操作符来把多个字符串连接为一个字符串
booleans 布尔值,布尔值只有两种结果 true 或 false
var name = 'uSee';
if (name) {  // 当 if 判断 name 时,返回的就是布尔值,当前返回 true
  print('You have a name!');
}

sets 无序集合,集合中的值唯一
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};
如果需要创建一个空集,则要在类型参数之前使用{},或将{}分配给Set类型的变量
var names = <String>{};// 或者
Set<String> names = {};// var names = {}; // 这样写创建的则是 map 而不是 set

lists列表,可以看作 PHP 中的数组 Array
var list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);
list[1] = 1;
assert(list[1] == 1);
var constantList = const [1, 2, 3]; // constantList[1] = 1; // 取消注释会导致错误

Map 是一个键值对相关的对象
键和值可以是任何类型的对象,键名唯一,键值可重复
看起来似乎和 Javascript 中的对象一样。
var gifts = {
  // Key  : Value
  'first' : 'partridge',
  'second': 'turtledoves',
  'fifth' : 'golden rings'
};
var nobleGases = {
  2 : 'helium',
  10: 'neon',
  18: 'argon',
};
// Dart 中 gifts 跟 nobleGases 的区别是其键(key)
// gifts 的 key 为 String,nobleGases 的 key 为 int

Runes
在 Dart 中,runes 是 UTF-32 的字符串代码点。
main() {
  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));
}
*让上述代码在 DartPad 中试运行
symbols
可参考 官方文档 //dart.dev/guides/language/language-tour#symbols