概要
- Swift 初心者です。文法にて疑問に思っている点を質問させてください!
- 以下コードにて、エラーが出てしまっている理由がわかりません。
class Person { func response( ok: ([String: Any]) -> Void, ng: () -> Void ) -> Void { ok(["test": "test"]) ng() } func response( ok: () -> Void, ng: () -> Void ) -> Void { ok() ng() } } let person = Person() person.response( ok: { r in print(r) }, ng: { print("ng") } ) // error: ambiguous use of 'response(ok:ng:)'
error: ambiguous use of 'response(ok:ng:)
のエラーが出てしまっており、二つの関数が同じモノとして、判断されている理由がわかりません外部引数の名前が異なる場合
、引数の型が異なる場合
は関数名が同じでもオーバーロードにより違う関数と解釈されると自分のなかでは理解しております。- 今回のケースでは、引数にとっているクロージャーの型が異なり、実行時に
ok
メソッドに引数を指定しているので、["test": "test"]
が表示される事を期待しているのですが、思った通りにいかなく疑問に思っている感じです。
質問
- 引数に指定しているクロージャーの型が違うにもかかわらず、エラーが出てしまっているのはどうしてでしょうか?
ご回答お願いします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/27 07:55
2016/10/27 08:40 編集
2016/10/27 09:42 編集
2016/10/27 10:01