如何将一个值与多个值进行比较-Swift

假设您有代码

if stringValue == "ab" || stringValue == "bc" || stringValue == "cd" {
    // do something
}

有没有办法缩短或美化这种情况(最好不使用switch语句)?我知道这段代码不起作用:

if stringValue == ("ab" || "bc" || "cd") {
    // do something
}

我已经看到了一些其他语言的复杂解决方案,但它们似乎是特定于语言的,不适用于Swift。任何解决方案将不胜感激。

评论
情流感
情流感

使用switch语句。

switch stringValue {
case "ab", "bc", "cd":
print("Yay!")
break 

default:
break 

}
点赞
评论
sunde
sunde

并不是我所知道的,尽管您可以做这样的事情,

let validStrings = Set<String>(arrayLiteral:"ab", "bc", "cd")
if validStrings.contains(str) {
    //do something      
}
点赞
评论
猪一样队友
猪一样队友
let a = 1
let b = 1
let c = 1
let d = 1
if a == b,a==c,a==d  {
    print("all of them are equal")
}
else {
    print("not equal")
}
点赞
评论
ousman
ousman
if someArray.contains(object) {
  // contains
} else {
  // does not contains
}

上面的函数返回布尔值,然后您相应地编写逻辑。

点赞
评论
笑狠徦
笑狠徦
let valuesArray = ["ab","bc","cd"]

valuesArray.contains(str) // -> Bool
点赞
评论
别离开我身边
别离开我身边

您可以创建如下扩展名:

extension Equatable {
    func oneOf(other: Self...) -> Bool {
        return other.contains(self)
    }
}

并像这样使用它:

if stringValue.oneOf("ab", "bc", "cd") { ... }

Credit for the impl which saved me typing it: https://gist.github.com/daehn/73b6a08b062c81d8c74467c131f78b55/

点赞
评论