Swift 扩展等式的元组数组以查找第一个元组匹配
这可能是一个noob问题,但我似乎无法写出这样的东西Swift 扩展等式的元组数组以查找第一个元组匹配,swift,Swift,这可能是一个noob问题,但我似乎无法写出这样的东西 extension Array where Element == (E1, E2), E1: Equatable, E2: Equatable { func contains(_ tuple: (E1, E2)) -> Bool { return contains { $0.0 == tuple.0 && $0.1 == tuple.1 } } } func inArray<E1:
extension Array where Element == (E1, E2), E1: Equatable, E2: Equatable {
func contains(_ tuple: (E1, E2)) -> Bool {
return contains { $0.0 == tuple.0 && $0.1 == tuple.1 }
}
}
func inArray<E1: Equatable, E2: Equatable>(_ tuple: (E1, E2), _ array: [(E1, E2)]) -> Bool {
return array.contains { t in t.0 == tuple.0 && t.1 == tuple.1 }
}
我想要的是扩展一个由equalable
值组成的元组数组,这样我就可以确定某个元组是否属于该数组
我可以写一个这样的自由函数
extension Array where Element == (E1, E2), E1: Equatable, E2: Equatable {
func contains(_ tuple: (E1, E2)) -> Bool {
return contains { $0.0 == tuple.0 && $0.1 == tuple.1 }
}
}
func inArray<E1: Equatable, E2: Equatable>(_ tuple: (E1, E2), _ array: [(E1, E2)]) -> Bool {
return array.contains { t in t.0 == tuple.0 && t.1 == tuple.1 }
}
func-inArray(u元组:(E1,E2),u数组:[(E1,E2)])->Bool{
return array.contains{t in t.0==tuple.0&&t.1==tuple.1}
}
,但如果可能的话,我想将此函数附加到数组
还要注意的是,我有点拘泥于元组,因此不能使用其他构造,如
equalable
structs/enum/classes来对此进行建模。您可以通过约束方法而不是
分机:
extension Array {
func contains<E1, E2>(_ tuple: (E1, E2)) -> Bool where E1: Equatable, E2: Equatable, Element == (E1, E2) {
return contains { $0.0 == tuple.0 && $0.1 == tuple.1 }
}
}
扩展数组{
func包含(\tuple:Element)->Bool,其中Element==(T,U){
返回包含{tuple.0==0.0&&tuple.1==0.1}
}
}
我认为在元组数组中存储的内容最好存储在元组数组中。@Sweeper是的,我知道,但我需要的上下文需要元组…可能的重复不会将方法添加到几乎任何类型的数组中,影响类型安全吗?@Cristik No.E1
和E2
都受到约束,这意味着元素
也受到约束。直到现在,我还不知道可以在泛型方法中约束周围类的泛型参数!