我有一张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")
} 这是可行的,但这是最好的解决办法吗?也许可以简化这段代码?
还有什么更好用呢?如果是其他的还是换掉案例陈述?
发布于 2018-07-05 15:36:00
它应写成:
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都有优势。使用最适合您需要的代码/逻辑。或者,在这种情况下,不要使用任何一种。
发布于 2018-07-05 16:48:27
下面是另一个有趣的替代方案(例如,在初始化实例属性时,它可能很有用:
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")
}
}()
}https://stackoverflow.com/questions/51194992
复制相似问题