区间的定义
kotlin 的 区间是通过 运算符重载和 扩展函数来实现的:
val range1= 1..10 // 闭区间
val range2 = 1 until 10 // 左闭右开区间
val range3 = 1 ..10 step 5 // 带步长的区间
val range4 = 10 downTo 1 // 逆序区间
区间的应用
- 区间可以通过 in 和 !in 关键字来判断 某个元素 是否在区间里。
- 还可以通过in 关键字实现类似java 的 forEach 功能。
- 通过 in关键字配合区间的创建,实现数组的遍历
fun main() {
val range1= 1..10 // 闭区间
val range2 = 1 until 10 // 左闭右开区间
val range3 = 1 ..10 step 5 // 带步长的区间
val range4 = 10 downTo 1 // 逆序区间
if(1 in range1){
println(" 我在区间里")
}
for(element in range1){
println(" element $element")
}
val array = intArrayOf(1,3,5,7)
for(i in 0 until array.size){
println(" 第 i个 元素是 ${array[i]}")
}
// 上面的遍历方式,kotlin 考虑到了 ,
for(i in array.indices){
println(" indices 是kotlin 的 Array 的新语法糖 第 i个 元素是 ${array[i]}")
}
}
反编译 后的代码,IntRange 在循环中变成了常见的java 形式,一种语法糖。
public static final void main() {
byte var1 = 1;
IntRange range1 = new IntRange(var1, 10);
IntRange range2 = RangesKt.until(1, 10);
byte var3 = 1;
IntProgression range3 = RangesKt.step((IntProgression)(new IntRange(var3, 10)), 5);
IntProgression range4 = RangesKt.downTo(10, 1);
if (range1.contains(1)) {
String var4 = " 我在区间里";
boolean var5 = false;
System.out.println(var4);
}
int element = range1.getFirst();
int i = range1.getLast();
if (element <= i) {
while(true) {
String var6 = " element " + element;
boolean var7 = false;
System.out.println(var6);
if (element == i) {
break;
}
++element;
}
}
int[] array = new int[]{1, 3, 5, 7};
i = 0;
boolean var8;
int var14;
String var15;
for(var14 = array.length; i < var14; ++i) {
var15 = " 第 i个 元素是 " + array[i];
var8 = false;
System.out.println(var15);
}
i = 0;
for(var14 = array.length; i < var14; ++i) {
var15 = " indices 是kotlin 的 Array 的新语法糖 第 i个 元素是 " + array[i];
var8 = false;
System.out.println(var15);
}
}