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

能否将立即执行闭包直接作为Swift中if语句的判断条件?

问题解答

可以直接省略常量hasAtLeastOneTrue,将立即执行闭包放在if语句的条件位置,该写法完全符合Swift语法规则。

对应实现代码

let arr = [false, false, false, true, false, false, true, false]

if {
    var x = false
    arr.forEach {
        x = x || $0
    }
    return x
}() {
    print("At least one true")
} else {
    print("All false")
}

原理解释

这种写法成立的核心是立即执行闭包会在当前代码位置直接运行,并返回对应类型的结果。你写的闭包返回值为Bool类型,刚好匹配if条件对布尔值的要求,运行输出结果和原有写法完全一致。

更简洁的优化方案

Swift数组原生提供了contains方法,可以直接实现判断数组是否包含true的需求,不需要手动写遍历逻辑:

let arr = [false, false, false, true, false, false, true, false]
if arr.contains(true) {
    print("At least one true")
} else {
    print("All false")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:39:01