首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >扩展一个可选的Equatables数组?

扩展一个可选的Equatables数组?
EN

Stack Overflow用户
提问于 2020-06-02 06:53:46
回答 1查看 62关注 0票数 1

我想写一个扩展,用于操作符合Equatable的可选值数组,例如:

代码语言:javascript
代码运行次数:0
运行
复制
class Bar: Equatable { ... }

let bar1 = Bar()
let bar2 = Bar()
let bars: [Bar?] = [ bar1, bar2, nil ]
bars.foo() <-- this guy

有没有办法用Swift做到这一点?我尝试了许多类似的变体:

代码语言:javascript
代码运行次数:0
运行
复制
extension Array where Element == Optional<Equatable> {
    func foo() { ... }
}

我理解为什么Equatable不高兴,但有没有办法绕过它呢?

我发现了一个非常类似的问题:How to extend protocol Optional, where Wrapped item is Array of Equatable generic elements?,但我需要可选的元素,而不是可选的数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-02 07:09:42

正如评论中提到的,你不能这样做:

代码语言:javascript
代码运行次数:0
运行
复制
extension Array where Element == Optional<Equatable>

但是您可以在Array扩展中创建一个泛型函数:

代码语言:javascript
代码运行次数:0
运行
复制
extension Array {
    func foo<T: Equatable>() where Element == Optional<T> {
        ...
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62142201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档