Swift 真的没有 in() 比较运算符吗?
Is there really no in() comparison operator for Swift?
Swift 开始编码。以前使用其他语言的经验。我正在寻找 if 语句的 in() 比较,因为我有一个要比较的值列表。在其他语言中我会做这样的事情:
if x in("this", "that", "other") 那么...
然而,我有Googled和Googled,它Swift似乎没有这样的基本功能。这是真的吗? (或者 Google 现在是否针对广告进行了如此优化,这个问题已经落伍了)我真的需要:
如果 x == "这个" || x = “那个” ||或 x = "其他"
我使用 array.contains() 编写了这个字符串扩展来处理这个问题(这有效但在我看来是倒退的),但我不敢相信我是第一个想要这个的用户而且我宁愿不破解我的方法。
extension String {
func inArr(_ list:[String]) -> Bool {
return list.contains(self)
}
}
使用数组:
if ["this", "that", "other"].contains("that") {
print("Yes, it's in")
}
不是您问题的直接答案,但您可以创建一个自定义运算符来完成与您想要的类似的事情:
extension Sequence where Element: Equatable {
static func ~=(lhs: Element, rhs: Self) -> Bool {
rhs.contains(lhs)
}
}
用法:
if "that" ~= ["this", "that", "other"] {
print(true) // true
}
Swift 开始编码。以前使用其他语言的经验。我正在寻找 if 语句的 in() 比较,因为我有一个要比较的值列表。在其他语言中我会做这样的事情:
if x in("this", "that", "other") 那么...
然而,我有Googled和Googled,它Swift似乎没有这样的基本功能。这是真的吗? (或者 Google 现在是否针对广告进行了如此优化,这个问题已经落伍了)我真的需要:
如果 x == "这个" || x = “那个” ||或 x = "其他"
我使用 array.contains() 编写了这个字符串扩展来处理这个问题(这有效但在我看来是倒退的),但我不敢相信我是第一个想要这个的用户而且我宁愿不破解我的方法。
extension String {
func inArr(_ list:[String]) -> Bool {
return list.contains(self)
}
}
使用数组:
if ["this", "that", "other"].contains("that") {
print("Yes, it's in")
}
不是您问题的直接答案,但您可以创建一个自定义运算符来完成与您想要的类似的事情:
extension Sequence where Element: Equatable {
static func ~=(lhs: Element, rhs: Self) -> Bool {
rhs.contains(lhs)
}
}
用法:
if "that" ~= ["this", "that", "other"] {
print(true) // true
}