美文网首页程序员Flutter圈子Flutter中文社区
来吧 Dart 我爱你 (3) List Set 和 Map

来吧 Dart 我爱你 (3) List Set 和 Map

作者: zidea | 来源:发表于2019-06-08 21:33 被阅读2次
dart

我们学习一门语言少不了集合类型,每种语言都有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
map
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'};
developer

相关文章

网友评论

    本文标题:来吧 Dart 我爱你 (3) List Set 和 Map

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