我用泛型逻辑创建了一个小例子,我不明白这个错误意味着什么。我认为指定初始化程序存在一些问题。
希望有人已经处理过,可以向我解释。
protocol Test {
init(value: Int)
}
class ClassTest<T: Test> where T: UIView {
var t: T
init() {
t = T(value: 2) //error:
}
}
给出以下编译器错误:
参数标签'(值:)'与任何可用的重载都不匹配
答案 0 :(得分:3)
此错误已在Swift Jira中打开:( - https://bugs.swift.org/browse/SR-3837
答案 1 :(得分:2)
现在试试这个 hack :
class ClassTest<T: Test> where T: UIView {
var t: T
init() {
// t = T(value: 2) // Compiler error!
t = create()
}
}
func create<T: Test>() -> T {
return T(value: 2)
}
我想要担心一个 less 约束让编译器继续: - )
编译器仍然损坏?检查this code compiles successfully是否已经修复此错误。