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