小编JMI*_*JMI的帖子

检查Swift中是否存在全局函数

是否可以检测是否定义了某些全局函数(非类方法)(在iOS中)?像respondsToSelector课堂上的东西......

introspection ios swift

7
推荐指数
1
解决办法
327
查看次数

默认参数作为泛型类型

我有用 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';你的意思是使用“作为!” …

generics default swift

6
推荐指数
1
解决办法
2459
查看次数

标签 统计

swift ×2

default ×1

generics ×1

introspection ×1

ios ×1