【Swift】クロージャーの使い方

Swift

クロージャーとは

クロージャーは、関数を変数のように扱うことができる機能です。
関数を引数として渡したり、関数から戻り値として返したりすることができます。

基本的な構文

クロージャーの基本形は以下の通りです:

{ (引数) -> 戻り値の型 in
    // 処理内容
}

簡単な例として、数値を2倍にするクロージャー:

let doubler = { (number: Int) -> Int in
    return number * 2
}

実践的な使用例

配列の要素を変換

map関数とクロージャーを組み合わせた例:

let numbers = [1, 2, 3, 4, 5]
let doubledNumbers = numbers.map({ (number: Int) -> Int in
    return number * 2
})
print(doubledNumbers) // [2, 4, 6, 8, 10]

クロージャーを引数として使用

クロージャーを2回実行する関数の例:

func runTwice(_ closure: () -> Void) {
    closure()
    closure()
}

runTwice {
    print("Hello")
}
// 出力:
// Hello
// Hello

キャプチャーとエスケープ

クロージャーには2つの重要な特徴があります:

  1. キャプチャー: クロージャーが作成された時点の変数を保持できる
  2. エスケープ: 関数の実行終了後もクロージャーを実行できる

例:

var x = 10
let closure = {
    print(x)
}

func foo(closure: () -> Void) {
    closure()
}
foo(closure: closure) // 10

このケースでは、クロージャーが変数xをキャプチャーし、関数fooの中で使用されています。

タイトルとURLをコピーしました