map基本使用方法:
var xa = [1,2,3]
let squares =xa.map {
$0 * $0
}
等價于:var squares = [Int]()
for e inxa {
squares.append(e * e)
}
map的實現方法:
extension Array {
func map_wershest<T>(_ transform:(Element)->T) -> [T] {
var result: [T] = []
result.reserveCapacity(count)
forxinself {
result.append(transform(x))
}
return result
}
}
let cubes = x.map_wershest {
$0 * $0 * $0
}
不禁回想起十多年前,第一次遇見C++標準庫,一臉懵x。硬著頭皮看了幾眼,掉頭就走,再也沒有回去過。如此簡單的“套路”,居然成為了大名鼎鼎的 map-reduce。現在想想,當時只是少了一點點耐心,再加上英語單詞背的太少,無法找到循序漸進的書籍,由淺入深的把它學透。以至于,與如此簡單而神奇的代碼,錯過了十多年。感謝萬能的Internet,如今我們可以輕易的薅資本主義羊毛:<Eloquent javaScript, 2nd Edition> (safaribooksonline.com), Chapter 5. Higher-Order Functions<Mastering Swift 3> (safaribooksonline.com), Chapter 3. Using Swift Collections and the Tuple Type<Advanced Swift> Chapter 1 Built-In Collections
|
新聞熱點
疑難解答