(Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?
Posted
技术标签:
【中文标题】(Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?【英文标题】:(Swift)How to get the index of a tuple element (Date, MyClass) from a tuple array [(Date, MyClass)]? 【发布时间】:2017-10-16 18:05:28 【问题描述】:我有一个元组 (Date, MyOwnClass) 类型的数组,并尝试从元组数组中找到等于我的目标元组的特定元组的索引。当我尝试使用“.indexOf( $0 == targetTuple )”时,XCode 给我错误提示“二进制运算符 == 不能...”
提前致谢!
【问题讨论】:
请提供minimal reproducible example 【参考方案1】:如果元组的所有元素都符合 Equatable 协议,则元组会自动符合 Equatable 协议,因此您只需要确保您的类实现 Equatable 协议:
class MyClass
var name : String
init(_ _name : String)
name = _name
extension MyClass: Equatable
public static func ==(lhs: MyClass, rhs: MyClass) -> Bool
return lhs.name == rhs.name
let ar : [(Int, MyClass)] = [
(1, MyClass("A")),
(2, MyClass("B")),
(1, MyClass("A"))
]
if let ix = ar.index(where:$0 == (1, MyClass("A")))
print(ix)
else
print("not found")
// 0 is printed
【讨论】:
小修正:有==
操作符用于相等元素的元组,但元组不符合Equatable
协议。
非常感谢您的回答。由于协议 Equatable 对我来说是一个新事物,所以我对何时使用它以及为什么我的元组需要它有疑问。谢谢!!以上是关于(Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?的主要内容,如果未能解决你的问题,请参考以下文章