初期化子引数としてオプションの閉鎖を取ります引数を引数としてクロージャを渡して実行するにはどうすればよいですか?クラス<code>A</code>の
class A {
var closure:()?
init(closure: closure()?) {
self.closure = closure
self.closure()
}
}
私は閉鎖などの引数を持つ関数を渡したい:
class B {
let a = A(closure: action(1)) // This throws the error: Cannot convert value of type '()' to expected argument type '(() -> Void)?'
func action(_ i: Int) {
//...
}
}
クラスA
は、引数でクロージャaction
を実行する必要がありi
。
これを正しく記述する方法についてはわかりませんが、上記のコードコメントのエラーを参照してください。何を変えなければならないのですか?
の最初には、それは関数型ではない、それは無効ですオプション。とにかく、あまり意味をなさない。あなたが探している言葉は、部分的に適用される関数です。 –
@ValentinRadu "あなたが探している言葉は、部分的に適用された関数です"いいえ、それはありません。 – matt
@mattケアを説明してください?すべての引数が部分的に適用された部分的に適用された関数があります。 Swiftを含む多くの言語でこれが可能です。 'func(a:Int)(){}'これに感覚があるかどうかは、別の質問です。 –