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)
你可以创建一个这样的扩展:
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/
不是我知道,你可以做这样的事情,
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)