【问题标题】:(Swift)How to get the index of a tuple element (Date, MyClass) from a tuple array [(Date, MyClass)]?(Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?
【发布时间】:2017-10-16 18:05:28
【问题描述】:

我有一个元组 (Date, MyOwnClass) 类型的数组,并尝试从元组数组中找到等于我的目标元组的特定元组的索引。当我尝试使用“.indexOf({ $0 == targetTuple })”时,XCode 给我错误提示“二进制运算符 == 不能...”

提前致谢!

【问题讨论】:

标签: swift indexing tuples equatable


【解决方案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 对我来说是一个新事物,所以我对何时使用它以及为什么我的元组需要它有疑问。谢谢!!
猜你喜欢
  • 2014-12-19
  • 2016-09-09
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 2021-06-29
相关资源
最近更新 更多