【问题标题】:Swift Range Operator with two unknown values具有两个未知值的 Swift 范围运算符
【发布时间】:2016-08-11 16:18:27
【问题描述】:

如果我有两个未知值,比如说x 和y,那么循环遍历这些值之间between 的所有值的最佳方法是什么?

例如,给定值 x = 0 和 y = 5,我想对值 0、1、2、3、4 和 5 做一些事情。如果这样更简单,结果可以排除 0 和 5。

使用 Swift 的 Range 运算符,我可以做这样的事情:

for i in x...y {
    // Do something with i
}

除了我不知道x 或y 是更大的价值。

范围运算符的Swift documentation 声明:

封闭范围运算符 (a...b) 定义从 a 到 b 的范围,并包括值 a 和 b。 a 的值不能大于b。

这里有很多解决方案。一个非常直接的方法是:

let diff = y - x

for i in 0...abs(diff) {
    let value = min(x, y) + i
    // Do something with value
}

有没有更好或更优雅的方法来实现这一点?

【问题讨论】:

    标签: ios swift loops


    【解决方案1】:

    我想最明确的写法应该是:

    for i in min(a, b)...max(a, b) {
        // Do something with i
    }
    

    要排除第一个和最后一个值,您可以增加下限并使用 Swift ..< 语法:

    let lowerLimit = min(a, b) + 1
    let upperLimit = max(a, b)
    
    for i in lowerLimit..<upperLimit {
        // Do something with i
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2020-05-10
      • 2011-01-21
      相关资源
      最近更新 更多