![](https://img.haomeiwen.com/i8207483/908f3d48f1c59ea5.jpg)
我们学习一门语言少不了集合类型,每种语言都有Array 一个有序的集合。
List
创建集合
var list = [1, 2, 3];
List<int> list1 = [1, 2, 3];
在 Dart 可以定义一个包含多个类型元素的数组。
var list2 = ["angular", 12, true];
for (var item in list2) {
print(item);
}
spread 操作符
void main() {
var list = [1, 2, 3, 4, 5];
var list2 = [0, ...list];
print("the length of list2 is ${list2.length}");
}
var list;
var list2 = [0, ...list];
print("the length of list2 is ${list2.length}");
- 如果 list 没有定义使用 spread 操作符将数组 list 元素添加到 list2,但是如果 list 没有初始化也就是 null 就会在编译报错。
Exception has occurred.
NoSuchMethodError: The getter 'iterator' was called on null.
Receiver: null
Tried calling: iterator
我们可通过 ?符号来判断 list 是否为 null 如果是 null 就不使用操作符。这个好像在 kotlin 中看见。
void main() {
var list;
var list2 = [0, ...?list];
print("the length of list2 is ${list2.length}");
}
输出
the length of list2 is 1
遍历
for (var item in list1) {
print(item);
}
在 Dart 2.3 引入 collection if
通过判断isAuthorized
的值来决定是否添加元素。感觉这个不错呀。第一次见到
bool isAuthorized = false;
var nav = ["home", "about", if (isAuthorized) "setting"];
for (var menu in nav) {
print(menu);
}
也可以通过 collections for 来将一个集合元素添加到另一个集合中。
var listOfInts = [1, 2, 3];
var listOfStrings = ['#0', for (var i in listOfInts) '#$i'];
for (var item in listOfStrings) {
print(item);
}
Set
Set 是一个无序的去重的集合。这个应该不难理解吧
void main() {
var tuts = {"angular", "vue", "angular", "react"};
for (var tut in tuts) {
print(tut);
}
}
从输出可以看到已经去重了。
angular
vue
react
![](https://img.haomeiwen.com/i8207483/2b1cb9980314a272.png)
angular
vue
react
创建一个 Map,Map 就是一个元素以键值对形式的集合。
var tuts = {'angular': "zidea", "vue": "tina", "koa": 'zidea'};
void main() {
var tuts = {'angular': "zidea", "vue": "tina", "koa": 'zidea'};
print("the autor of angular is ${tuts['angular']}");
}
添加元素
tuts['express'] = 'zidea'
如果定义 const 表示 tuts 是不可变的,这也是函数式编程的基石。这样我们就无法改变tuts
var tuts = const{'angular': "zidea", "vue": "tina", "koa": 'zidea'};
![](https://img.haomeiwen.com/i8207483/907180a8d08265ae.jpeg)
网友评论