数据类型

Dart 内置支持下面这些类型:

  • numbers
    • int 整数值,其取值通常位于 -253 和 253 之间。
    • double (64-bit 双精度) 浮点数,符合 IEEE 754 标准。
  • strings
  • booleans
  • lists (也被称之为 arrays)
  • maps
  • runes (用于在字符串中表示 Unicode 字符)
  • symbols

数值

// 整数
var x = 1;
var hex = 0xDEADBEEF;
var bigInt = 34653465834652437659238476592374958739845729;
// 浮点数
var y = 1.1;
var exponents = 1.42e5;

位移操作符

assert((3 << 1) == 6);  // 0011 << 1 == 0110
assert((3 >> 1) == 1);  // 0011 >> 1 == 0001
assert((3 | 4)  == 7);  // 0011 | 0100 == 0111

字符串

字符串可以使用单引号或双引号包裹

字符串插值

var s = 'world';
print('Hello $s'); // Hello world
var num = 1;
print('${num + 1}'); // 2

字符串拼接

print('Hello' + 'world')

三引号字符串

print(
  '''
  Hello
  world
  '''
);

Raw字串

print(r"In a raw string, even \n isn't special."); // \n 将不会触发换行

列表和数组

列表和数组, 或称为有序集合, 下标从0开始

var list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);
list[1] = 1;
assert(list[1] == 1);

在 list 字面量之前添加 const 关键字,可以 定义一个不变的 list 对象(编译时常量):

var constantList = const [1, 2, 3];

字典

var gifts = {
  // Keys    Values
  'first' : 'partridge',
  'second': 'turtledoves',
  'fifth' : 'golden rings'
};
var nobleGases = {
  // Keys  Values
  2 :   'helium',
  10:   'neon',
  18:   'argon',
};
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';

如果所查找的键不存在,则返回 null:

var gifts = {'first': 'partridge'};
assert(gifts['fifth'] == null);

使用 .length 来获取 map 中键值对的数目:

var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds';
assert(gifts.length == 2);

同样使用 const 可以创建一个 编译时常量的 map:

final constantMap = const {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};
// constantMap[2] = 'Helium'; // Uncommenting this causes an error.

类型转换

// String -> int
var one = int.parse('1'); // 1
// String -> double
var onePointOne = double.parse('1.1'); // 1.1
// int -> String
String oneAsString = 1.toString(); // '1'
// double -> String
String piAsString = 3.14159.toString(); // '3.14159'
String piAsString = 3.14159.toStringAsFixed(2); // '3.14'

空值检测

针对不同类型的值, 有不同的检测方法

// Check for an empty string.
var fullName = '';
assert(fullName.isEmpty);
// Check for zero.
var hitPoints = 0;
assert(hitPoints <= 0);
// Check for null.
var unicorn;
assert(unicorn == null);
// Check for NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);

类型判断

通过 is 关键字可以判断变量属于什么类型(或属于某个类):

var i = 0;
print(i is int); // true
print(i is num); // true
print(i is List); // false
print(i is Object); // true

参考资料

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress