gpt4 book ai didi

swift - 在 Swift 中使用条件逻辑设置不可变变量

转载 作者:搜寻专家 更新时间:2023-11-01 06:27:33 24 4
gpt4 key购买 nike

我有一个关于在 Swift 中正确执行此操作的最佳方式(即样式)的 super 简单问题。

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

他们是否有任何方法可以将 let 的范围向外扩展一个级别,或者通常可以通过其他方式处理此类情况?

最佳答案

您可以在第二个示例中使用 let:

let x:Int
if a > b {
x = 1
} else {
x = 2
}

只要 x 在所有路径中完全初始化,这就可以工作。

它也适用于 switch:

let a = 3
let x: Int
switch a {
case 1:
x = 1
case 2:
x = 2
default:
x = 3
}

关于swift - 在 Swift 中使用条件逻辑设置不可变变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51991918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com