STUDiO405

趣味のスノーボードやSK8、キャンプ、山登り、iOSアプリ開発関連のブログになる予定

関数の引数に関数を渡す時の構文について

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中に自作アプリのアップデート版のメインの実装を終え、週末にちょっとずつ改善を進めていったアプリがリリースされました!

Remaining

Remaining

  • STUDiO405
  • 仕事効率化
  • ¥250
今回の目玉は月単位でしかやりたいことの進捗を管理できなかったんですが、日/週/月/任意の間隔/指定期日までのパターンで管理できるようになりました!!
ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
 
 
話はまた変わって先日、自分がギターを始めるきっかけとなったBOØWYのライブアルバムが発売され早速ゲットしました。
当時はVHSで見てたんですが、布袋氏のカッコ良いステージングを見てこれはやるしかない!!とギターを買い、バンドやってるクラスメイトやそのバンドメンバーに教えてもらったりしてな思い出が。
懐かしいなぁ。。。
でも今では弾く回数激減なので腕は上がってません。
人前ではまだ弾くのが恥ずかしいです(;・∀・)

*1:追記 上記のサイトの次のとこに書いてありました...よく読んでからブログ書けよ>俺 まぁ備忘録だからいいよねw