小编Lit*_*eye的帖子

为什么不允许明确地专门化泛型函数?

在Swift中,应该使用参数类型或返回值来隐式地专门化泛型函数.问题是,当我调用这样的函数时:

func serialize<T>(continuation: GenericWithLongName<T, NSError> -> Void) -> Void 
Run Code Online (Sandbox Code Playgroud)

我不能写

serialize<SomeType> {
    obj in 
    ...
}
Run Code Online (Sandbox Code Playgroud)

它应该是

serialize {
    (obj: GenericWithLongName<SomeType, NSError>) -> Void in
    ...
}
Run Code Online (Sandbox Code Playgroud)

看起来很痛苦.

这个"特征"似乎存在了很长时间.这是一个设计决定吗?允许明确专业化是否有任何负面影响?

有没有什么方法可以使代码变得整洁干净,而无需重构那个泛型类?

swift

5
推荐指数
1
解决办法
2038
查看次数

标签 统计

swift ×1