【发布时间】:2020-07-28 19:10:13
【问题描述】:
我已经尝试关注Cannot explicitly specialize a generic function,但我无法掌握这个
这是我的代码
class A<T>{
func test(){
self.verify(value : T.self)
}
func verify<T>(value: T) {
print("Default")
}
}
extension A where T == String {
func verify<T>(value: T){
print("Str")
}
}
let o = A<String>()
o.test()
测试是唯一可以调用的可用函数。当我执行这个时,我得到 默认不是 Str。
但是根据泛型,我应该得到 Str.我在这里做错了什么?如果 T == String
,我应该怎么做才能保持扩展 A 给我 Str【问题讨论】:
-
func verify<T>(value: T)verify方法的泛型类型T与类泛型T没有关系 -
在你的课堂上,你说 T 在第一个验证函数中可以是任何东西,并且 String 符合该要求。目前尚不清楚您要在这里做什么。
-
我想在test里面调用verify,希望根据T的类型,去对应的静态分派的verify声明。但事实并非如此。我如何在测试中调用验证并适当地对待 T