这是一个元素为元组的数组。我想用firstIndex(of:)
来检查元素的索引var f: [(String, String)] = [
("a", "a"),
("b", "b"),
("0", "c"),
("d", "d"),
("e", "e")
]
var x = f[0]
f.firstIndex(of: x) // error: Type '(String, String)' cannot conform to 'Equatable'
f.firstIndex(of: ("a", "a")) // error: Type '(String, String)' cannot conform to 'Equatable'
我试图找出错误发生的原因,但是找不到。有人能告诉我原因吗?
在谷歌上搜索和堆栈溢出…但不能
您可以为(String, String)元组类型创建自定义的Equatable一致性。
extension (String, String): Equatable {
static func == (lhs: (String, String), rhs: (String, String)) -> Bool {
return lhs.0 == rhs.0 && lhs.1 == rhs.1
}
}
为什么使用firstIndex
尝试使用.0
和.1
:
var f: [(String, String)] = [
("a", "a"),
("b", "b"),
("0", "c"),
("d", "d"),
("e", "e")
]
var x = f[0]
print(x.0) // prints "a"
print(f[2].0) // prints "0"
print(f[2].1) // prints "c"