Swift標準関数のmapとfilter

January 02, 2015

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

メモとして。

参考


Profile picture

Written by morizotter who lives and works in Tokyo building useful things. You should follow them on Twitter