在递减循环时,是否有声明性的工作来排除最后一个项目,例如使用downTo
?
答案 0 :(得分:0)
虽然kotlin标准库不包含此实用程序,但是您可以为此定义自己的扩展功能。
看一下stdlib,直到的一个定义是:
/**
* Returns a range from this value up to but excluding the specified [to] value.
*
* If the [to] value is less than or equal to `this` value, then the returned range is empty.
*/
public infix fun Int.until(to: Int): IntRange {
if (to <= Int.MIN_VALUE) return IntRange.EMPTY
return this .. (to - 1).toInt()
}
因此,我们可以定义
infix fun Int.downUntil(to: Int): IntProgression {
if (to >= Int.MAX_VALUE) return IntRange.EMPTY
return this downTo (to + 1).toInt()
}
您可能还想定义此函数的版本以在其他基元上进行操作。