Flutter学习总结(四、Dart的集合和控制流程)

582 阅读3分钟

Dart的集合和控制流程

一起从0开始学习Flutter!

Dart跟我们常用的语言也是有List,Map,Set这些类型的集合类型,只是有的用法跟我们以前接触的略有不同。

  1. List 一个集合的初始化可以通过三种形式,第一行创建了一个固定长度的列表,如果出现了超过长度则会直接报错,后两种都是可以创建一个可变长度的集合,在后面通过add和insert方法添加单个元素,通过addAll添加一组元素。
  List sizeList = List(3);
  List emptyList = List();
  List list = ["11","22","33","44"];
  emptyList.add("55");
  list.addAll(emptyList);
  // sizeList.addAll(list);Cannot add to a fixed-length list
  list.insert(0, "00");
  print(list);//[00, 11, 22, 33, 44, 55]
  1. List遍历 在集合中我们最常用到的就是对集合的遍历,给大家看几种比较常用的遍历方式。
	//方式一
  for (var i = 0;i < list.length;i++) {
    print("item is "+list[i]);
  }
  	//方式二
  for (var item in list) {
    print("item is $item");
  }
  	//方式三
  list.forEach((item){
    print("item is $item");
  });

还有一种常用的遍历是使用list的every方法,特别之处在于它返回的是一个bool类型,在碰到不满足条件的元素后会返回False,并停止循环,如果所有元素都满足条件则返回True。

  var result = list.every((item){
    var s = item as String;
    print("刚刚进来的数据是$s");
    /*
    刚刚进来的数据是00
    刚刚进来的数据是11
    刚刚进来的数据是22
    刚刚进来的数据是33
    刚刚进来的数据是44 */
    return s != '44';
  });
  print("result is $result");//result is false
  1. Set Set的初始化只有两种形式,Set跟其他语言的Set一样都是自带了去重特性,只是它在去重完了还是保持着一个有序的集合。
  var setList = {"a","b","c","d","a","b"};
  print(setList);//{a, b, c, d}
  var set = Set();
  set.add("a");
  set.add("b");
  set.add("c");
  print(set);//{a, b, c}
  1. Set遍历 Set的循环也可以使用上面List中介绍的循环方式,还介绍一种也是常用的适用于所有集合的一种遍历所有元素的方法,map方法。特别之处在于在遍历的同时我们可以修改元素的内容,获得到一个修改完的集合。
  var setMap = set.map((item){
    if(item is String)//数据类型的判断,is操作符判断是否后面指定的类型,非操作为is!
      return item.toUpperCase();
  });
  print(setMap);//(A, B, C)
  1. Map Map的初始化也是有两种形式,跟Set一样它也是在有相同Key的时候去重完了保持一个有序的状态。可以通过使用containsKey和containsValue方法来查询想要找的元素是否存在。
  var mapList = {'a':'11','b':'22','c':'33','c':'44'};
  print(mapList);//{a: 11, b: 22, c: 44}
  var map = Map();
  map["aa"] = "11";
  map["bb"] = "22";
  map["cc"] = "33";
  map["aa"] = "44";
  print(map);//{aa: 44, bb: 22, cc: 33}
  print(map.containsKey("aa"));//true
  print(map.containsValue("11"));//false
  1. Map的遍历 Map有着跟List和Set一样的遍历方式,只是注意我们在遍历是整个Map还是只对Key遍历的时候注意写法的不同就可以了。
  map.forEach((key,value){
    print("key is $key,value is $value");
  });
  var keys = map.keys;
  keys.forEach((key){
    print("key is $key");
  });
  1. 控制语句 上面在各种集合的介绍里顺便加入了基本的几种控制流程的语句,有if..else..有三种for循环的写法,和forEach的用法,继续说一下switch..case..和do..while的用法。 乍一看感觉switch跟原来也没有区别,但是细看会发现在case2上多了一个label,而且这个label还出现在了我们调用之后,是不是感受到了状态机的味道,以后的多状态处理就可以使用它了。
 switch (1) {
    case 0:
      print("0");
      break;
    case 1:
      print("1");// 1
      continue nums;
    nums:
    case 2:
      print("2");// 2
      break;
    default:
  }

do..while和while..do的用法跟其他语言的用法是一样的,没有其他需要注意的地方了。

  List list = ["11","22","33","44"];
  var i = 0;
  do {
    i++;
  } while (i<list.length);
  while(i > 0){
    i--;
  }

以上是Dart中的集合和控制流程语句基本用法,还有一些高级的用法可以在以后的学习中慢慢加进来。

接下来学习Dart中的函数