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

Swift中如何函数式使用非运算符实现布尔值取反且无需自定义扩展

错误原因

Swift内置的!非运算符仅支持对Bool类型的直接值取反,而digitsExceptForFive.contains是一个(Int) -> Bool类型的函数,未传入参数时它本身不是布尔值,不符合!的操作数类型要求,因此触发类型转换报错。

最优原生解决方案(无需自定义扩展/运算符)

直接在filter的闭包中完成contains调用和取反操作,所有Swift版本均支持,符合函数式编程规范:

let digitsExceptForFive = [1, 2, 3, 4, 6, 7, 8, 9]
let fives = [1, 2, 3, 4, 5, 6, 7, 8, 9].filter { !digitsExceptForFive.contains($0) }
// 运行结果:[5]

写法中$0代表filter遍历到的当前Int元素,每次遍历都会将元素传入contains方法得到布尔结果,再通过!取反返回给filter做判断条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:15:03