美文网首页
2. List(转)

2. List(转)

作者: JohnSnow_b20c | 来源:发表于2020-07-18 18:15 被阅读0次

转自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 的详情和例子,请参阅 控制流集合提案

相关文章

网友评论

      本文标题:2. List(转)

      本文链接:https://www.haomeiwen.com/subject/deyfkktx.html