是否可以检测是否定义了某些全局函数(非类方法)(在iOS中)?像respondsToSelector课堂上的东西......
我有用 Swift 编写的协议和他的实现:
protocol P {
}
struct A: P {
}
Run Code Online (Sandbox Code Playgroud)
协议用作某些功能的通用类型:
func foo<T: P>(param: T) {
}
func foo() {
foo(param: A())
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切正常。但我想将 A() 设置为给定函数的默认参数:
func foo<T: P>(param: T = A()) {
}
Run Code Online (Sandbox Code Playgroud)
不幸的是出现以下错误:
“A”类型的默认参数值不能转换为“T”类型。
或者
func foo<T: P>(param: T = A() as P) {
}
Run Code Online (Sandbox Code Playgroud)
,
let a: P = A()
func foo<T: P>(param: T = a) {
}
Run Code Online (Sandbox Code Playgroud)
返回:
“P”类型的默认参数值不能转换为“T”类型
或者
func foo<T: P>(param: T = A() as T) {
}
Run Code Online (Sandbox Code Playgroud)
返回:
'A' 不可转换为 'T';你的意思是使用“作为!” …