转自Konie Shadow
“数组”或者有序的对象组,也许是大部分编程语言中最常用的集合类型了。在 Dart 中,数组是类型为 List 的对象,所以人们通常称之为“列表”。
Dart 的列表字面量看起来就像 JavaScript 的数组字面量。下面是一个简单的 Dart 列表:
var list = [1, 2, 3];
说明:Dart 推断上面的 list 类型是 List<int>。如果你试图添加一个非整数值对象到这个列表中,分析器或者运行时会报告一个错误。要了解详细信息,请参阅 类型推断。
列表使用基于0的索引,也就是说 0 是列表中第一个元素的索引,而 list.length - 1 是最后一个元素的索引。你可以像 JavaScript 一样获取 list 的长度和它的元素:
var list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);
list[1] = 1;
assert(list[1] == 1);
要创建一个作为编译期常量的列表,在列表字面量前加上 const:
var constantList = const [1, 2, 3];
// constantList[1] = 1; // 这一行会引发一个错误
Dart 2.3 引入了 扩展运算符 (...) 和 空感知的扩展运算符 (...?),它们提供了一个简洁的方法来向集合中插入多个元素。
举例来说,你可以使用扩展运算符 (...) 来向一个列表中插入另一个列表的所有元素。
var list = [1, 2, 3];
var list2 = [0, ...list];
assert(list2.length == 4);
如果扩展运算符右边的表达式可能为空,你可以使用空感知的扩展运算符来 (...?) 避免异常:
var list;
var list2 = [0, ...?list];
assert(list2.length == 1);
要了解更多关于扩展运算符的详情和例子,请参阅 扩展运算符提案。
Dart 2.3 也引入了 集合 if 和 集合 for,它们提供了使用条件 (if) 和循环 (for) 构建结合的方法。
下面是一个使用 集合 if 来创建一个包含3个或4个项目的列表的例子:
var nav = [
'Home',
'Furniture',
'Plants',
if (promoActive) 'Outlet'
];
下面是一个使用 集合 for 在把一个集合的元素插入到另一个集合前操纵它们的例子:
var listOfInts = [1, 2, 3];
var listOfStrings = [
'#0',
for (var i in listOfInts) '#$i'
];
assert(listOfStrings[1] == '#1');
要了解更多关于集合 if 和 for 的详情和例子,请参阅 控制流集合提案。
网友评论