【发布时间】:2021-01-08 21:10:56
【问题描述】:
这段代码可以正常编译:
class Numbers {
func operateOn<T>(_ num1: T, _ num2: T, do task: (T, T) -> ()) {
task(num1, num2)
}
}
let n = Numbers()
n.operateOn(1,2) {
print(($0 + $1) * 10)
}
n.operateOn("l","ll") {
print(($0 + $1))
}
但对于以下代码无法编译。
func process<T> (add: String, completion: (T) -> () ) {
completion("k") // ERROR
}
但我收到以下错误:
'String' 不能转换为 'T'
我尝试传递Int,但又遇到另一个错误:
'Int' 不能转换为 'T'
Int 或 String 不能满足没有任何约束的通用要求吗?!
【问题讨论】: