私は、プロトコルとスウィフトで書かれた彼の実装を持っている:すべてが正常に動作今までデフォルトパラメータ
func foo<T: P>(param: T) {
}
func foo() {
foo(param: A())
}
:
protocol P {
}
struct A: P {
}
プロトコルは、いくつかの機能のためのジェネリック型として使用されています。残念ながら、次のエラーで
func foo<T: P>(param: T = A()) {
}
:しかし、私は与えられた関数のデフォルトパラメータとしてA()を設定したい
Default argument value of type 'A' cannot be converted to type 'T'.
それとも
func foo<T: P>(param: T = A() as P) {
}
、
let a: P = A()
func foo<T: P>(param: T = a) {
}
返品:
Default argument value of type 'P' cannot be converted to type 'T'
それとも
func foo<T: P>(param: T = A() as T) {
}
戻り値:
'A' is not convertible to 'T'; did you mean to use 'as!' to force downcast?
私が間違ってやっていますか?問題はどこだ?私は力を使いたくない
は次のようにキャスト:
func foo<T: P>(param: T = A() as! T) {
}
は、事前にありがとうございます。