我希望检查变量的值 - aVar是否等于几个字母之一:
if aVar != "S" || "X" {println("NO")}
这给出了错误:
二元运算符||不能应用于String
类型的操作数
一个非常小的问题但无法找到答案
答案 0 :(得分:2)
如果您想知道aVar
是S还是X:
if (aVar=="S")||(aVar=="X") {...}
答案 1 :(得分:0)
代码中的问题是swift是一种类型安全的语言,所以:
if aVar != "S" || "X" {println("NO")}
不行。另一方面,为了使上述代码能够工作,您只需重复使用aVar
这样的名称:
if (aVar != "S" || aVar != "X") {println("NO")}
欢呼声
答案 2 :(得分:0)
let aVar = "someStringValue"
if aVar == "S" || aVar == "X" {
print("String: '\(aVar)' is equal to one or both of these strings.")
} else {
print("String: '\(aVar)' doesn't equal to at least one of these strings.")
}
答案 3 :(得分:0)
另一种方法是使用数组:
if !contains(["S", "X"], aVar) {
// do something
}
答案 4 :(得分:0)
已经有很多答案,但在测试多个值时,没有一个是使用显而易见的答案:一套。
let matchingSet : Set<Character> = ["S", "X", "M", "G"]
let char : Character = "A"
if matchingSet.contains(char) {
// Do something
}
使用集合,复杂性始终为O(1)
,而使用多个OR
语句或数组的复杂度最低为O(n)
。当然,当您只需要检查2个值时,您不应该使用集合,因为这会使您的代码不易读取。您拥有的值越多,我建议使用的集合就越多。