You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用三元运算符编写代码?及优化指定Swift函数的实现方案

嗨,我来帮你梳理并优化这段Swift代码~

首先先拆解你原代码的逻辑:只要contactSelectViewList有选中的联系人,或者arrEmployeeCount不为空且包含员工数据,就启用btnDone按钮,否则禁用。

用三元运算符改写的版本

如果一定要用三元运算符,我们可以把两个条件合并成一个布尔表达式,再通过三元赋值:

func checkBtn() {
    // 用空合运算符处理arrEmployeeCount可能为nil的情况,nil时用0替代
    let shouldEnable = self.contactSelectViewList.count > 0 || (arrEmployeeCount?.count ?? 0) > 0
    btnDone.isEnabled = shouldEnable ? true : false
}

不过其实这里的三元运算符有点多余——因为shouldEnable本身就是布尔值,直接赋值更简洁:

func checkBtn() {
    btnDone.isEnabled = self.contactSelectViewList.count > 0 || (arrEmployeeCount?.count ?? 0) > 0
}

更符合Swift风格的优化写法

在Swift里,判断集合是否为空推荐用isEmpty(比count > 0更高效,尤其是对于复杂集合),而且可读性更强。我们可以进一步优化:

func checkBtn() {
    // 拆分成两个语义清晰的变量,代码更易读
    let hasSelectedContacts = !self.contactSelectViewList.isEmpty
    // arrEmployeeCount为nil时,?.isEmpty会返回nil,和false比较结果为false,正好符合原逻辑
    let hasEmployees = arrEmployeeCount?.isEmpty == false
    
    btnDone.isEnabled = hasSelectedContacts || hasEmployees
}

如果追求精简,也可以写成一行:

func checkBtn() {
    btnDone.isEnabled = !contactSelectViewList.isEmpty || arrEmployeeCount?.isEmpty == false
}

这个版本既简洁,又完美复现了你原代码的逻辑,还符合Swift的最佳实践。

内容的提问来源于stack exchange,提问作者Amey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:39:44