Dart 内置支持下面这些类型:web
因为 Dart 中每一个变量引用的都是一个对象 – 一个类的实例, 你一般使用构造函数来初始化变量。 一些内置的类型具备本身的构造函数。例如, 能够使用 Map()构造函数来建立一个 map, 就像这样 new Map()。express
dart只支持两种数字:int(整数值,其取值一般位于 -253 和 253 之间);double(64-bit (双精度) 浮点数,符合 IEEE 754 标准)数组
// 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');
字符串是 UTF-16 编码的字符序列。 能够使用单引号或者双引号来建立字符串app
var s1 = 'Single quotes work well for string literals.'; var s2 = "Double quotes work just as well.";
能够在字符串中使用表达式,用法是这样的: ${expression}。若是表达式是一个比赛服,能够省略 {}。 若是表达式的结果为一个对象,则 Dart 会调用对象的 toString() 函数来获取一个字符串。svg
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!');
注意: == 操做符判断两个对象的内容是否同样。 若是两个字符串包含同样的字符编码序列, 则他们是相等的。函数
当 Dart 须要一个布尔值的时候,只有 true 对象才被认为是 true。 全部其余的值都是 flase。这点和 JavaScript 不同, 像 一、 “aString”、 以及 someObject 等值都被认为是 false。this
if (1) { print('JS prints this line.'); } else { print('Dart in production mode prints this line.'); // However, in checked mode, if (1) throws an // exception because 1 is not boolean. }
Dart 这样设计布尔值,是为了不多余if (nonbooleanValue),而是直接判断变量是否为布尔值类型编码
// 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);
Dart 中数组就是 List 对象。var list = [1, 2, 3];
Lists 的下标索引从 0 开始,第一个元素的索引是 0. list.length - 1 是最后一个元素的索引。.net
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]; // constantList[1] = 1; // Uncommenting this causes an error.
Map 是一个键值对相关的对象。 键和值能够是任何类型的对象。每一个 键 只出现一次, 而一个值则能够出现屡次。
var gifts = { // Keys Values 'first' : 'partridge', 'second': 'turtledoves', 'fifth' : 'golden rings' }; //另一种表现形式 var gifts = new Map(); gifts['first'] = 'partridge'; gifts['second'] = 'turtledoves'; gifts['fifth'] = 'golden rings';
1》add
var gifts = {'first': 'partridge'}; gifts['fourth'] = 'calling birds'; // Add a key-value pair
2》获取
var gifts = {'first': 'partridge'}; assert(gifts['first'] == 'partridge'); 若键不存在,则返回null
3》长度
var gifts = {'first': 'partridge'}; gifts['fourth'] = 'calling birds'; assert(gifts.length == 2); // .length
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}。
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)); }
#radix #bar