Disons que vous avez le code
if stringValue == "ab" || stringValue == "bc" || stringValue == "cd" {
// do something
}
Existe-t-il un moyen de raccourcir cette condition ou de l’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 déjà vu des solutions complexes sur d'autres langues, mais elles semblent spécifiques à une langue et ne sont pas applicables à Swift. Toute solution serait appréciée.
let valuesArray = ["ab","bc","cd"]
valuesArray.contains(str) // -> Bool
Pas que je sache, vous pouvez faire quelque chose comme ça,
let validStrings = Set<String>(arrayLiteral:"ab", "bc", "cd")
if validStrings.contains(str) {
//do something
}
Vous pouvez créer une extension comme ceci:
extension Equatable {
func oneOf(other: Self...) -> Bool {
return other.contains(self)
}
}
et l'utiliser comme ça:
if stringValue.oneOf("ab", "bc", "cd") { ... }
Crédit pour l'impl qui m'a sauvé la frappe: https://Gist.github.com/daehn/73b6a08b062c81d8c74467c131f78b55/
if someArray.contains(object) {
// contains
} else {
// does not contains
}
Ici, la fonction ci-dessus renvoie la valeur booléenne, puis vous écrivez la logique en conséquence.
Si vous voulez vérifier si une String
contient plusieurs valeurs, vous pouvez définir une 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
}
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")
}