gpt4 book ai didi

swift - 为什么不允许显式特化泛型函数?

转载 作者:搜寻专家 更新时间:2023-10-30 22:29:36 30 4
gpt4 key购买 nike

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

func serialize<T>(continuation: GenericWithLongName<T, NSError> -> Void) -> Void 

我不能只写

serialize<SomeType> {
obj in
...
}

应该是

serialize {
(obj: GenericWithLongName<SomeType, NSError>) -> Void in
...
}

看起来很痛苦。

这个“特征”似乎存在了很长时间。这是设计决定吗?允许显式特化是否有任何负面影响?

有没有什么方法可以在不重构泛型类的情况下使上面的代码整洁干净?

最佳答案

“特化”函数的一种方法是将泛型类型作为函数参数:

func serialize<T>(
t: T.Type,
continuation: GenericWithLongName<T, NSError> -> Void ) -> Void { }

现在您可以像这样“专门化”该函数:

serialize(SomeType.self) { 
obj in
...
}

我不知道为什么您请求的功能不可用。我同意您推荐的功能会很有用,但与此同时它也同样有效并且几乎同样简洁。

关于swift - 为什么不允许显式特化泛型函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36231811/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com