Swiftの標準関数のmapとfilterについてちゃんと使えてなかったので、ちょっとメモとして書いておく。
map
var array = [“a10”, “b10”, “c11”] var mappedArray = map(array, { $0 + ” - 1”}) println(“mapped: \(mappedArray)”) // mapped: [a10 - 1, b10 - 1, c11 - 1]
コレクションの各要素に関数を適用し、その結果からなる新しい配列を返す。
- func map<C: CollectionType, T>(source: C, transform:(S.Generator.Element) -> T) -> [T]
- func map<S: SequenceType, T>(source: S, transform:(S.Generator.Element) -> T) -> [T]
第2引数の関数は引数を一つしか取らないからアクセスする際は$0
でOK
もう一つ簡単なのもあった。
var u = 10 var mappedU = map(u, { $0 * 10 }) println(“mapped: \(mappedU)”) //mapped: Optional(100)
こちらは、第1引数に関数を適用した結果を返す。第1引数がnilならnilが返る。
- func map<T, U>(x: T?, f:(T) -> U) -> U?
filter
var array = [“a10”, “b10”, “c11”] var filteredArray = filter(array, { $0.hasSuffix(“10”) }) println(“filtered: \(filteredArray)”) // filtered: [a10, b10]
関数で指定した条件を満たす要素からなる新しい配列を返す。
- func filter<S:SequenceType>(source: S, includeElement:(S.Generator.Element) -> Bool) -> [S.Generator.Element]
第2引数の関数は引数を一つしか取らないからアクセスするときは$0でOK
メモとして。