扩展可选等式数组?
Extend an Array of Optional Equatables?
我想编写一个扩展,用于对符合 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
不开心,但有什么办法解决这个问题吗?
我发现这个问题非常相似: 但我需要可选元素,而不是可选数组。
正如评论中提到的你不能做的:
extension Array where Element == Optional<Equatable>
但您可以在 Array
扩展中创建通用函数:
extension Array {
func foo<T: Equatable>() where Element == Optional<T> {
...
}
}
我想编写一个扩展,用于对符合 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
不开心,但有什么办法解决这个问题吗?
我发现这个问题非常相似:
正如评论中提到的你不能做的:
extension Array where Element == Optional<Equatable>
但您可以在 Array
扩展中创建通用函数:
extension Array {
func foo<T: Equatable>() where Element == Optional<T> {
...
}
}