我有这张if else
支票:
var aItem: CGFloat = 0
if item == 0 {
aItem = 457
} else if item == 1 {
aItem = 576
} else if item == 2 {
aItem = 758
}
print(aItem)
我想用switch
case语句替换这段代码。怎么做?
我尝试过:
var aItem: CGFloat = 0
switch item {
case _ where item == 0:
aItem = 457
case _ where item == 1:
aItem = 576
case _ where item == 2:
aItem = 758
default:
print("this is impossible")
}
这是可行的,但是最好的解决方案是吗?也许可以以某种方式简化此代码?
什么更好用?否则还是切换案例陈述?
答案 0 :(得分:5)
它应该写为:
let aItem: CGFloat
switch item {
case 0:
aItem = 457
case 1:
aItem = 576
case 2:
aItem = 758
default:
aItem = 0
print("this is impossible")
}
print(aItem)
如果您的item
只能是0、1或2,我会这样做:
let anItem: CGFloat = [457, 576, 758][item]
在这种情况下,使用if else
或switch
之间几乎没有区别。选择你喜欢的。 if
和switch
有优势。使用最适合您所需代码/逻辑的代码。或者,在这种情况下,请勿使用任何一个。
答案 1 :(得分:1)
这是另一个有趣的替代方法(例如,在初始化实例属性时可能很有用:
struct SomeType {
let someProperty: Int = {
let x = 0
switch x { // Unfortunately, `x` can't be an instance member of self.
case 0: return 457
case 1: return 576
case 2: return 758
default:
fatalError("this is impossible")
}
}()
}