キャンペーンの今のうちに是非!!↓


⇒「ひろゆきの名著『1%の努力』を無料で全部読む方法

【Swift奮闘記ep23】関数オブジェクト前半(関数の型、呼び出し、引数と戻り値がない関数の型)

IPhoneアプリ作成Swift奮闘記

この本を見ながら進めてる↓

前回⇒「【Swift奮闘記ep22】タプル(定義、タプルの参照、値の名前付タプル、関数の戻り値にタプル)

関数なら簡単に理解できたが、オブジェクトという言葉がつくだけで一気に難易度増す気がする。

簡単に言うと「関数も変数や定数に代入して使いまわしたり、引数や戻り値にすることができるよー」っていう話で、そういう関数のことを関数オブジェクトという。

確かに、今までワードプレスのテーマ編集とかでPHP言語をいじった時に、なんで関数がここにあるんだろう?って思ったことがあったんだけど、それってもしかして関数オブジェクトだったのかな。わからんけど。

※追記

全然違った。

 

関数の型

(Int, Int ) -> Intっていうのが関数の型と呼ばれる形で (引数の型、引数の型) ー> 戻り値の型 という形になっている。

今回変数mathの型と関数additionの型が一致したからエラーにならずに代入できるけど、もしvar math: (Int, Int) -> String = addition とやったらコンパイルエラーとなる。

 

関数オブジェクトの呼び出し

変数や定数に関数オブジェクトを代入してみたが、それを呼び出す方法をみてみよう。 といっても簡単で、代入した「変数名(引数、引数)」でオッケーだ。 addition(a:引数、b:引数)とやっても結果が同じになることも確認してみよう。

この代入した関数は何度も呼び出すことができる、と書いてあるのだが、関数オブジェクトじゃない普通の関数は何度も呼び出せないんだろうか。はてな。

 

引数と戻り値がない関数の型

関数に引数や戻り値がない場合、その型は以下のように表現される。

( ) -> Void

実際にコードを見ていこう。

このようにsayhello()のような引数も戻り値もない関数の型は()->Voidで表現できることがわかった。

なんのために関数オブジェクトを使うのか、どんな場面で関数オブジェクトが必要になってくるのかはまだわからないが、とりあえず理解はしたのでオッケーだと思う。

関数オブジェクトはまだ続く。

続き⇒「【Swift奮闘記ep24】関数オブジェクト後半(関数を引数にする、関数オブジェクトを戻り値にする)

コメント