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

ICa*_*You 25 if-statement swift

假设你有代码

if stringValue == "ab" || stringValue == "bc" || stringValue == "cd" {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

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

if stringValue == ("ab" || "bc" || "cd") {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

我在其他语言上看到了一些复杂的解决方案,但它们看起来特定于语言,不适用于Swift.任何解决方案将不胜感激.

Aar*_*ron 26

let valuesArray = ["ab","bc","cd"]

valuesArray.contains(str) // -> Bool
Run Code Online (Sandbox Code Playgroud)

  • 你可以这样写:`if ["ab","bc","cd"].contains(stringValue){`. (14认同)

Pat*_*yer 7

你可以创建一个这样的扩展:

extension Equatable {
    func oneOf(other: Self...) -> Bool {
        return other.contains(self)
    }
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

if stringValue.oneOf("ab", "bc", "cd") { ... }
Run Code Online (Sandbox Code Playgroud)

感谢impl让我输入它:https://gist.github.com/daehn/73b6a08b062c81d8c74467c131f78b55/


Luk*_*Feo 6

不是我知道,你可以做这样的事情,

let validStrings = Set<String>(arrayLiteral:"ab", "bc", "cd")
if validStrings.contains(str) {
    //do something      
}
Run Code Online (Sandbox Code Playgroud)


小智 6

使用 Switch 语句。

switch stringValue {
case "ab", "bc", "cd":
    print("Yay!")
default:
    break     
}
Run Code Online (Sandbox Code Playgroud)