我有 2 个重载函数,我正在尝试使用它们在调用者中使用泛型的签名来调用它们。例如:
func sum(_ i: Int, _ s: Int){
print("sum \(i+s)")
}
func sum(_ i: String, _ s: Int){
var res: String="";
for _ in 1...s{
res += i
}
print("Repeat \(res)")
}
func sumCaller<T>(_ f: T){
print(type(of: f)) // compiler prints the value is function (Int,Int)->Void !!!
}
sumCaller(sum as (Int, Int)->Void)
这里一切都很好。但是当我试图像这样打电话f时sumCaller
func sumCaller<T>(_ f: T){
print(type(of: f)) //compiler prints the value is function (Int,Int)->Void !!!
f(1,3)
}
编译器抛出错误:
error: testing.playground:68:5: error: cannot call value of non-function type 'T' f(1,3)
但它仍然是我作为sumCaller参数传递的同一个函数。拜托,有人可以解释我的错误吗?