[Swift]クロージャーの使い方について

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がエラーを吐き出します。



カテゴリー