区间
- 一个数学上的概念,表示范围
-
Kotlin
中的区间在Java
中是没有的 - 由操作符
..(rangeTo函数)
,in
和!in
构成 - 任何可比较的类型,都定义了区间,但整型原生类型的区间实现有优化
var range: IntRange = 0..10; // [0,10]
var range_exclusive: IntRange = 0 until 10; // [0,10) = [0,9]
var emptyRange: IntRange = 0..-1;
fun main() {
println(emptyRange.isEmpty()); // true
println(range.contains(5)); // true
println(50 in range); // false
// 迭代
for (i in range_exclusive) {
print("$i, "); // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
}
}
整型区间迭代
整型区间(IntRange
,LongRange
,CharRange
)可迭代,循环遍历。
Kotlin
编译器会将整形区间转换为类似Java
基于索引的for
循环,没有额外开销。
// 倒叙迭代
for (i in 5 downTo 1) { // 5,4,3,2,1,
print("$i,");
}
// 不以步长为1迭代
for (i in 1.rangeTo(10) step 2) { // 1,3,5,7,9,
print("$i,");
}
// 不以步长为1 倒叙迭代
for (i in 10 downTo 1 step 3) { // 10,7,4,1,
print("$i,");
}
网友评论