LoginSignup
68
73

More than 5 years have passed since last update.

[Swift] クロージャを利用したコールバックの書き方メモ

Last updated at Posted at 2015-06-19

手元の Swift のバージョン:1.1

例えば次のような適当な関数 hogeMethod() を定義する。第3引数は関数オブジェクト。

// 第3引数でコールバックとして実行したい関数オブジェクトを受け取る
func hogeMethod(name: String, age: Int, callback: (String) -> Void) -> Void {

  // とりあえず例として第1引数(名前)と第2引数(年齢)からメッセージ文字列を作成
  let message = "\(name)さん\(age)歳ですね"

  // 処理が終わったら第3引数で受け取った関数を実行。今回はメッセージを渡す
  callback(message)  
}

この関数の呼び出しは次のような感じ。

// 第3引数でコールバックが返されたら実行したい処理を書く
hogeMethod("山田", 34, { message in
  println(message) // => 山田さん34歳ですね      
})

もしくは次のように書いてもいい。(最後の引数が関数である場合の略記)

hogeMethod("山田", 34) { message in
  println(message) // => 山田さん34歳ですね      
}

この書き方の何が嬉しいか?

上記の hogeMethod() だと即座に結果が返されてしまうが、時間がかかる処理や非同期で実行したい処理を書きたい場合。

68
73
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
73