如果我有两个未知值,让我们说x
和y
,那么在这些值之间之间的所有值的最佳方式是什么?
例如,给定值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
}
有没有更好或更优雅的方法来实现这一目标?
答案 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
}