特有の関数? mapとは?$0とは?
最近swiftで競技プログラミングに手を出し始めてアプリを作る時には出てこなかったような関数を見かけたのでその使い方についてまとめました!
mapとは?$0とは?
題名にも書きましたがmapとは何か?
そしてmapを見かける時は当然のように$0が使われています。
ですので今回はこの二つに焦点を絞ってみていきます!
※今回取り扱うのは配列のmapの使い方です。
今回は下記の解説をさらに詳しくまとめていきます。
Swiftのmap, filter, reduce(などなど)はこんな時に使う!
http://qiita.com/motokiee/items/cf83b22cb34921580a52
まずはこのサイトのmapの部分を一読してください。
よろしいですか?
では解説していきます。
mapとは
mapは全要素に処理を適用したい時に使う!
let array = [1,2,3,4,5] let newArray = array.map { $0 * 5 } newArray
上記の解説でも取り扱われていましたこちらのコードは各要素を5倍した新しい配列newArrayをmapで生成しています。
この$0とはなんでしょう?
これにについて理解していきます。
元をたどるとクロージャの引数を省略するときに使うコードです。
こちらもクロージャについてわかりやすく書いてあるので読んでみましょう。
$0を理解するのみなので下記のサイトの⑤まで読めばOKです。
http://hajihaji-lemon.com/smartphone/swift/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/
まとめるとこんな感じ
基本的なクロージャ
処理が1文ならばreturnを省略できる
処理が1文ならば戻り値の型も省略できる
型がわかっていれば型も省略できる
引数が1つであれば引数のカッコも省略できる(宣言の方はできないみたい)
引数にこだわりがなければ省略できる(この時第一引数を$0第二引数を$1のように書く)
そして宣言を消して出来上がり!
以上で$0は理解できたんじゃないかなと思います。
では最初に戻りましょう。
let array = [1,2,3,4,5] let newArray = array.map { $0 * 5 } newArray
これを読んでみると
array.map { $0 * 5 }
array | arrayという配列の |
map | 一つ一つの要素にアクセス |
{$0 * 5} | 要素を第一引数として5倍した |
解説は以上です!