第二波我们来聊一聊集合, 集合就是我们通俗的collection. 这个大类在java和kotlin里是非常常用的. 我们大部分的时间都是构建与集合相关的object来做逻辑. 当然, 自从有了extension和functional programming, 我们对集合这种Iterable的数据类型的操作变换便脱离了for循环, 飞了起来.
额, 跑题了. 回到今天的主人公--Dart. LOL.
1. Lists:
a. Dart没有所谓的array. 这样说貌似不是很恰当. 应该说, Dart的array就是list. 这点和我们平常熟知的kotlin不太一样, 我们通常有array和list, 然后会提供toList()或是toArray()的函数供我们变换. Dart并没有这样做. 只留给我们list, 其实这已经够用了. 我个人觉得Dart不是很在乎数据类型上的消耗.
b. list[1] 这种用角标来取元素的写法, 在script型和kotlin为代表的现代语言中已经用的蛮多了. 这里记录下这种用法. 具体实现可能不太一样, 像kotlin是用extension来做的. Dart的实现我们要去core里来看. 这里我们就不深度挖掘了.
c. 当然我们可以用const, 来创建一个compile-time的list. 这点有点像kotlin的mutableList, 其实就是如果我们已知自己的list元素, 其实可以做一个不变的list, 这样会节省性能. 当然这样写的潜在影响就是, 我们所创建的const list不可变换. 举例如下:
d. Dart是很喜欢我们传lambda的. 像这个sort: fruits.sort((a, b) => a.compareTo(b));
2. Maps:
a. 对于map的定义, 简单写起来用:区分开key和value.
//PS: 这里是不是看着这种狂换行的格式感觉无比蛋疼, 没事, 多去看看flutter的demo代码, 就习惯了. 个人感觉, Dart这种格式是为了UI表述方便. 毕竟Flutter没有xml和storyboard. 这样的狂换行其实将widget(以前的view)的层级分得很清晰.
好了, 今天就到这里了, 剩下的等我们细看Generics和Collections, 如果有很值得记下来的我会mark的.
欧了, 谢谢观赏, 大家加油!