我正在尝试在if语句中检查整数
中的switch语句if variable <= 3 {
// code
switch variable {
case 0:
println("0 case")
case 1:
println("1 case")
case 2:
println("2 case")
case 3:
println("3 case")
default:
println("error")
}
}
但是每个案例我都会收到错误
Binary operator '~=' cannot be applied to operands of type 'Int' and 'Int?'
我不明白为什么这不起作用。
答案 0 :(得分:2)
3
是Int
,但variable
是Int?
(可选Int
)。你必须打开它。
例如,您可以在nil
语句中检查它是否为if
。如果不是,那么强制解包(使用!
)在该条件的范围内是安全的:
许多可能的方法之一:
if variable <= 3 && variable != nil {
// code
switch variable! {
case 0:
println("0 case")
case 1:
println("1 case")
case 2:
println("2 case")
case 3:
println("3 case")
default:
println("error")
}
}
答案 1 :(得分:0)
var变量:Int
?将无法正常工作
var variable = 2
//var variable : Int? // will not work
if variable <= 3 {
// code
switch variable {
case 0:
println("0 case")
case 1:
println("1 case")
case 2:
println("2 case")
case 3:
println("3 case")
default:
println("error")
}
}
答案 2 :(得分:0)
如果您的variable
是可选项,请注意,如果它是nil
,那么在您的初始if
语句中,表达式nil <= 3
将返回true
。
因此,您可以选择的最全面的形式(恕我直言)是:
var variable : Int? = ...
switch variable {
case .Some(0):
print("1 case")
case .Some(1):
print("2 case")
case .Some(3):
print("3 case")
case .Some(let x):
print("We got \(x)")
case .None:
print("variable is nil")
}
注意:强>
print
是Swift 2.0。在Swift 1.2中使用println