具有两个未知值的Swift Range运算符

时间:2016-04-19 12:59:37

标签: ios swift loops

如果我有两个未知值,让我们说xy,那么在这些值之间之间的所有值的最佳方式是什么?

例如,给定值x = 0y = 5我想对值0,1,2,3,4和5执行某些操作。结果可能会排除0和5这更简单。

使用Swift的Range运算符,我可以执行以下操作:

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

除了我不知道xy是否值更大。

范围运算符的Swift documentation表示:

  

闭区域运算符(a...b)定义从ab的范围,并包含值aba的值不得大于b

这里有很多解决方案。一个非常直截了当的是:

let diff = y - x

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

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

1 个答案:

答案 0 :(得分:2)

我想最明确的写作方式是:

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
}