Swift中能否实现变量的条件赋值?如何正确编写代码?
Swift中实现变量的条件赋值
你当前的写法错误在于,Swift的数组字面量内无法直接嵌入if-else语句块。针对你的需求,有几种简洁的实现方式:
1. 直接复用布尔值(最简方案)
因为active的取值完全等同于GlobalVariables.calculated的布尔状态,无需额外条件判断,直接传递该值即可:
struct Results: Identifiable { var id = UUID().uuidString var category: String var active: Bool } var results = [ Results(category: "Results", active: GlobalVariables.calculated) ]
2. 使用三元运算符(适用于简单条件逻辑)
如果后续需要调整条件逻辑,可通过三元运算符在数组字面量内完成条件赋值:
var results = [ Results(category: "Results", active: GlobalVariables.calculated ? true : false) ]
3. 先创建实例再组装数组(适用于复杂逻辑)
当条件逻辑更复杂时,先单独处理实例创建,再将其加入数组:
let resultItem: Results if GlobalVariables.calculated { resultItem = Results(category: "Results", active: true) } else { resultItem = Results(category: "Results", active: false) } var results = [resultItem]
4. 闭包初始化数组(适用于需要延迟计算的场景)
利用闭包在数组初始化时执行条件逻辑,适合需要延迟加载或复杂计算的情况:
var results: [Results] = { if GlobalVariables.calculated { return [Results(category: "Results", active: true)] } else { return [Results(category: "Results", active: false)] } }()
内容的提问来源于stack exchange,提问作者Edward Hasted
相关产品推荐
相关产品推荐

