1
我收到以下錯誤......如何在Swift中構造沒有協議的泛型?
'T' cannot be constructed because it has no accessible initializers
編譯時...
class Sub<T : Equitable> {
func def(v : T) -> Bool{
var d = T() // <- Error
return d == v
}
}
var s = Sub<Int>()
println(s.def(0), s.def(1)) // I'm expecting "true, false"
我明白,爲了讓泛型類型進行初始化,它需要符合到一個包含init()
構造函數的協議。如...
protocol A : Equitable {
init()
}
class Sub<T : A> {
但我會得到得到錯誤
Type 'Int' does not conform to protocol 'A'
在該行
var s = Sub<Int>()
那麼我將如何去製作一個價值類型如Int或Bool是否符合可以初始化的協議?
所以,如果我想使用這個類的詮釋,UINT,布爾等,我會添加一個擴展每個類型? – tidwall
是的,這是正確的,採用新的協議是一個擴展 – sketchyTech