首页 > 解决方案 > Kotlin 的范围检查是否有效?

问题描述

在科特林

val x = 50000
if (x in 1..100000) {
    println(x)
}

我认为上面的代码可读性比不等式的代码要好。但我想知道该代码的性能也不错。

如果它从字面上迭代 100000 次,这似乎太愚蠢了。

性能是否等于 (1 <= x && x <= 100000)?

标签: kotlin

解决方案


..运算符调用rangeTo创建IntRange对象的运算符函数。算子然后in调用contains算子函数,实现如下:

public operator fun contains(value: T): Boolean = value >= start && value <= endInclusive

因此,它不会循环 100000 次,它与

1 <= x && x <= 100000

除了它还创建了一个新IntRange对象,这在宏伟的计划中并不重要。


推荐阅读