3
プロトコル制限を持つジェネリック関数に引数を渡すときに、コンパイラの不一致が発生しているように見えます。私は、プロトコルタイプとして引数迅速な一貫性のないジェネリックプロトコル制限
protocol Selectable {
func select()
}
protocol Log : Selectable {
func write()
}
class DefaultLog : Log {
func select() {
print("selecting")
}
func write() {
print("writing")
}
}
let concrete = DefaultLog()
let proto: Log = DefaultLog()
func myfunc<T: Selectable>(arg: T) {
arg.select()
}
myfunc(concrete) // <-- This works
myfunc(proto) // <-- This causes a compiler error
proto.write() // <-- This works fine
コンパイラレポート、具体的な引数を渡すことはできませんが、:
error: cannot invoke 'myfunc' with an argument list of type '(Log)'
myfunc(proto)
^
note: expected an argument list of type '(T)'
myfunc(proto)
^
私はそれはまだ失敗選択またはログインプロトコルに機能を制限する場合。
これはコンパイラのバグですか?何かご意見は?
ああ、本当に、それは問題を回避してくれました。はい、私が他の例と分かる限り、ジェネリック型は具体的にする必要があります。ありがとう! –