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

如何简化多变量与同一区间表达式的比较逻辑?

简化多变量区间比较的几种方案

当然有办法让这段重复的区间检查代码更简洁!我来分享几个实用的思路:

1. 利用原生区间的contains方法

Swift的区间类型本身就自带contains方法,单个变量的区间检查可以直接写成:

(1...5).contains(x)

这完全等价于1 <= x && x <= 5,可读性一下子就上来了。

那你的原代码可以先简化成:

if (1...5).contains(x) && (1...5).contains(y) && (1...5).contains(z) {
    // 执行代码
}

2. 扩展Comparable类型,封装区间检查逻辑

如果需要频繁做这类区间检查,给所有可比较类型(比如Int、Double等)扩展一个自定义方法会更方便:

extension Comparable {
    func isBetween(lower: Self, upper: Self) -> Bool {
        return lower <= self && self <= upper
    }
}

调用的时候就像这样:

x.isBetween(lower: 1, upper: 5)

原代码就变成:

if x.isBetween(lower: 1, upper: 5) && y.isBetween(lower: 1, upper: 5) && z.isBetween(lower: 1, upper: 5) {
    // 执行代码
}

3. 封装多变量批量检查函数

如果经常需要同时检查多个变量是否在同一个区间里,可以写一个辅助函数来批量处理:

func allAreBetween<T: Comparable>(_ values: T..., lower: T, upper: T) -> Bool {
    return values.allSatisfy { $0.isBetween(lower: lower, upper: upper) }
    // 或者用原生contains:return values.allSatisfy { (lower...upper).contains($0) }
}

这下调用起来就超级简洁了:

if allAreBetween(x, y, z, lower: 1, upper: 5) {
    // 执行代码
}

额外提示:半开区间的情况

如果你的需求是半开区间(比如1 <= x < 6),只要把闭区间...换成半开区间..<就行,原生的contains方法同样支持:

(1..<6).contains(x)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:13:55