【发布时间】:2018-08-23 18:12:08
【问题描述】:
关于在 Swift 中正确执行此操作的最佳方式(即样式),我有一个超级简单的问题。
if a > b {
let x = 1
} else {
let x = 2
}
//then procede to use x
显然,这是行不通的,因为 x 的范围仅在 if 的每个分支内。但是,如果我希望 x 是不可变的,那么解决这个问题的首选方法是什么?到目前为止,我一直在这样做:
var x:Int
if a > b {
x = 1
} else {
x = 2
}
//then procede to use x
可行,但 x 是可变的。下一个选择是使用三元运算符,如下所示:
let x = a > b ? 1 : 2
这使得 x 不可变,但是当条件和结果值变得复杂时,在可读性方面还有一些不足之处。此外,使用三元解决方案完全失败了一个更复杂的例子:
if a > b {
let x = 1
} else if b > c {
let x = 2
} else {
let x = 3
}
}
//procede to use x
或者这个:
switch a {
case 1:
let x = 1
case 2:
let x = 2
default:
let x = 3
}
//procede to use x
他们是否有任何方式来提升向外一级的范围,或者通常处理这种情况的其他方式?
【问题讨论】:
标签: swift