如果我有两个未知的值,比如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文件规定:
闭合范围运算符(
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
}
有没有更好或更优雅的方法来实现这一点?
我想写它最明确的方式是:
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
}