我想写一个扩展,用于操作符合Equatable
的可选值数组,例如:
class Bar: Equatable { ... }
let bar1 = Bar()
let bar2 = Bar()
let bars: [Bar?] = [ bar1, bar2, nil ]
bars.foo() <-- this guy
有没有办法用Swift做到这一点?我尝试了许多类似的变体:
extension Array where Element == Optional<Equatable> {
func foo() { ... }
}
我理解为什么Equatable
不高兴,但有没有办法绕过它呢?
我发现了一个非常类似的问题:How to extend protocol Optional, where Wrapped item is Array of Equatable generic elements?,但我需要可选的元素,而不是可选的数组。
发布于 2020-06-01 23:09:42
正如评论中提到的,你不能这样做:
extension Array where Element == Optional<Equatable>
但是您可以在Array
扩展中创建一个泛型函数:
extension Array {
func foo<T: Equatable>() where Element == Optional<T> {
...
}
}
https://stackoverflow.com/questions/62142201
复制相似问题