クロージャの呼び出し方が気になったので質問させてください。
1.そもそもの話しなのですが、クロージャは下記のコードの様に
"func 何処かで作られたクロージャ名 (){}"
で呼び出せるのか。
2.下記コードの様に、ローカルスコープ(useClosure())内に入っていようとも外からクロージャを呼び出せるのか。
3.複数の同名のクロージャが存在している場合(複数のローカルスコープ内にそれぞれ)どのクロージャが呼び出されるのか。
基礎的な部分で申し訳ないのですが、調べてもよくわからなかったので教えていただけますと幸です。
よろしくお願いします。
以下コード
class JunkClass3 var name = "" /// クロージャーを使用する例 func useClosure() { let no = 20 // 接尾形式でクロージャーを渡す execClosure() { // 自動でキャプチャーされるのでそのまま使用可能 print("no: (no)") // この場合、この書き方ではエラーになる // → 周囲の環境にnameが見つからないため。かな? // print("name: (name)") // クロージャーの中でプロパティを参照するためにselfを使用 // → selfがキャプチャーされ、self.nameが使用可能になる print("name: (self.name)") } } /// 渡されたクロージャーを呼び出すだけのメソッド func execClosure(closure: (()->Void)) { closure() } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/09 08:53 編集
2018/03/09 09:59
2018/03/09 10:14
2018/03/12 02:31