例如:
func f(x: Int) -> Int { return x } func h(f: @escaping (Int) -> Any) { if (f is (Int) -> Int) { print(f(1)) } else { print("invalid") } } h(f: f)
我希望它打印出 1
但它实际上打印出 invalid
。
最佳答案
有一个使用泛型的解决方法:
func intF(x: Int) -> Int {
return x
}
func stringF(x: Int) -> String {
return "\(x)"
}
func h<T>(f: (Int) -> T) {
if (T.self == Int.self) {
print(f(1))
} else {
print("invalid")
}
}
h(f: intF) // prints: 1
h(f: stringF) // prints: invalid
关于swift - 如何在 Swift 中检查/谓词函数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409543/