第二波我們來聊一聊集合, 集合就是我們通俗的collection. 這個大類在java和kotlin里是非常常用的. 我們大部分的時間都是構建與集合相關的object來做邏輯. 當然, 自從有了extension和functional programming, 我們對集合這種Iterable的數(shù)據(jù)類型的操作變換便脫離了for循環(huán), 飛了起來.?
額, 跑題了. 回到今天的主人公--Dart. LOL.
1. Lists:
? ? a. Dart沒有所謂的array. 這樣說貌似不是很恰當. 應該說, Dart的array就是list. 這點和我們平常熟知的kotlin不太一樣, 我們通常有array和list, 然后會提供toList()或是toArray()的函數(shù)供我們變換. Dart并沒有這樣做. 只留給我們list, 其實這已經夠用了. 我個人覺得Dart不是很在乎數(shù)據(jù)類型上的消耗.
? ? b.?list[1] 這種用角標來取元素的寫法, 在script型和kotlin為代表的現(xiàn)代語言中已經用的蠻多了. 這里記錄下這種用法. 具體實現(xiàn)可能不太一樣, 像kotlin是用extension來做的. Dart的實現(xiàn)我們要去core里來看. 這里我們就不深度挖掘了.
? ? c. 當然我們可以用const, 來創(chuàng)建一個compile-time的list. 這點有點像kotlin的mutableList, 其實就是如果我們已知自己的list元素, 其實可以做一個不變的list, 這樣會節(jié)省性能. 當然這樣寫的潛在影響就是, 我們所創(chuàng)建的const list不可變換. 舉例如下:
? ? d. Dart是很喜歡我們傳lambda的. 像這個sort: fruits.sort((a, b) => a.compareTo(b));
2. Maps:
? ? a. 對于map的定義, 簡單寫起來用:區(qū)分開key和value.
//PS: 這里是不是看著這種狂換行的格式感覺無比蛋疼, 沒事, 多去看看flutter的demo代碼, 就習慣了. 個人感覺, Dart這種格式是為了UI表述方便. 畢竟Flutter沒有xml和storyboard. 這樣的狂換行其實將widget(以前的view)的層級分得很清晰.
好了, 今天就到這里了, 剩下的等我們細看Generics和Collections, 如果有很值得記下來的我會mark的.?
歐了, 謝謝觀賞, 大家加油!