関数の引数に関数を渡す時の構文について
Swift勉強中によく分からなかったので調べてみました。
写経して分からなかったのは以下のサイトに記載の例文。
Swift実践入門 ~ 今からはじめるiOSアプリ開発! 基本文法を押さえて、簡単な電卓を作ってみよう - エンジニアHub|Webエンジニアのキャリアを考える!
func numbersMap(list: [Int], condition: (Int) -> Int) -> [Int] {
var numbers: [Int] = []
for item in list {
numbers.append( condition(item) )
}
return numbers
}var items: [Int] = [1, 2, 3, 4, 5]
numbersMap(list: items, condition: { (number: Int) -> Int in number * 2 })
これの引数conditionの { (number: Int) -> Int in number * 2 }の中のin句以降。
ググっても分からず、手持ちの詳解Swiftを調べてみた。
関数のとこ見ても書いてない。。。
でもなんか見たことあるなぁと思い、目次を見てたらクロージャって単語が。
これかも?と見たら( ゚д゚)ビンゴーでした。
inの後は実行文とのこと。
Objective-Cの頃からクロージャが理解できず苦手だったので全く見当もつかなかったです(´・ω・`)
上記の例文だと
{ (引数名 : 型) -> 戻り値の型 in 実行文 }
ということになります。
今回の例文だと引数numberの値を2倍にするという無名関数ということになります。*1
はースッキリ。
しかし前回勉強してから数ヶ月とかざらにあるのでなかなか覚えられない。
そろそろSwift覚えなきゃと思いつつ他の趣味とか仕事が忙しかったりで進んでないのはもうダメでしょ。
ということで自作アプリをSwiftで書き換える作業をしながら覚えることにしました。
もう手を動かして苦労しないと覚えられん。。。
本題はここまで。
以下、告知とか雑文です。
GW中に自作アプリのアップデート版のメインの実装を終え、週末にちょっとずつ改善を進めていったアプリがリリースされました!
ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
話はまた変わって先日、自分がギターを始めるきっかけとなったBOØWYのライブアルバムが発売され早速ゲットしました。
当時はVHSで見てたんですが、布袋氏のカッコ良いステージングを見てこれはやるしかない!!とギターを買い、バンドやってるクラスメイトやそのバンドメンバーに教えてもらったりしてな思い出が。
懐かしいなぁ。。。
でも今では弾く回数激減なので腕は上がってません。
人前ではまだ弾くのが恥ずかしいです(;・∀・)
*1:追記 上記のサイトの次のとこに書いてありました...よく読んでからブログ書けよ>俺 まぁ備忘録だからいいよねw