Comment comparer une valeur avec plusieurs valeurs-Swift

disons que vous avez le code

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

Est-il possible de raccourcir cette condition ou embellir (de préférence sans utiliser l'instruction switch)? Je sais que ce code ne fonctionne pas:

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

j'ai vu des solutions complexes sur D'autres langues, mais elles semblent spécifiques à la langue et non applicables à Swift. Toute solution serait appréciée.

19
demandé sur ICanCYou 2015-09-24 00:53:18

6 réponses

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

valuesArray.contains(str) // -> Bool
22
répondu Aaron 2015-09-23 22:05:45

Pas que je sache, vous pouvez faire quelque chose comme cela,

let validStrings = Set<String>(arrayLiteral:"ab", "bc", "cd")
if validStrings.contains(str) {
    //do something      
}
6
répondu Luke De Feo 2015-09-23 21:58:20

Vous pouvez créer une extension comme ceci:

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

et l'utiliser comme ceci:

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

Crédit pour l'impl qui m'a sauvé la tapant: https://gist.github.com/daehn/73b6a08b062c81d8c74467c131f78b55/

5
répondu Pat Niemeyer 2016-07-30 15:36:46
if someArray.contains(object) {
  // contains
 } else {
  // does not contains
  }

ici, la fonction ci-dessus renvoie la valeur bool,puis vous écrivez la logique en conséquence.

0
répondu Narendra G 2015-09-24 10:03:42

Si vous voulez tester si un String contient un certain nombre de valeurs, vous pouvez définir un extension comme:

extension String: {
 func containsStrings(other: [String]) -> Bool {
     for string in other {
         if self.containsString(string) {
             return true
         }
     }
     return false
 }
}

Et pour l'utiliser:

let stringValue = "apple"

if stringValue.containsStrings(["ab", "bc", "le"]) {
 //Do something
}
0
répondu Tal Zion 2016-11-02 10:30:21
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")
}
0
répondu Ankit Kushwah 2018-08-03 17:19:15