[Swift]クロージャーの使い方について
Swiftのクロージャーの書き方について紹介していきます。
クロージャーってなに?
言語によっては無名関数などと呼ばれます。クロージャーは関数の一種で、文字通り名前のない関数とでも言いましょうか。
無名な関数?なんのこっちゃだと思いますので、実際にコードを書いて説明していきます。
かなりシンプルに、引数に+1をするだけの関数を作ってみます。
func plusOne (number : Int) -> Int {
return number + 1
}
plusOne(number: 1) //2
関数名はplusOneとしました。この関数を呼び出す度に引数に+1をしてくれます。上記コードでは引数に1を入力しているので結果は2となります。
冒頭でクロージャーは無名関数などと呼ばれると言いました。全く同じ処理をクロージャーで記述してみます。
方法は簡単で先頭の関数名を消します。まさに無名関数ですね。あとは、{を先頭に持ってきて、Intの後にinを加えます。
{ (number : Int) -> Int in
return number + 1
}
そのまま変数に入れ込んで引数を渡すことができます。
let plusOneClosure = {
(number : Int) -> Int in return number + 1
}
plusOneClosure(1) // 2
ちなみにクロージャーでは型推論があるので、Intなどは書かなくてもOKです。
let plusOneClosure = { (number) in number + 1}
plusOneClosure(1) // 2
かなりスッキリしましたね。
クロージャー内で関数を使う時には先頭にselfを付ける
クロージャー内で別で定義した関数を使うことも可能です。
その時には先頭にselfを付けましょう。
self.somethingFunc()
これが漏れているとXcodeがエラーを吐き出します。