一、Ranges
1. '..'操作符
val oneToTen = 1..10
注意'..'操作符是闭区间,即start和end元素都是包含在内的。
fun fizzBuzz(i: Int) =
when {
i % 15 == 0 -> "FizzBuzz "
i % 3 == 0 -> "Fizz "
i % 5 == 0 -> "Buzz "
else -> "$i "
}
fun main(args: Array<String>) {
for (i in 1..10) {
print("$i ")
}
}
输出:
1 2 3 4 5 6 7 8 9 10
2. 带步幅的遍历
for(i in 100 downTo 1 step 2) {
print("$i ")
}
输出:
从100开始,输出100到1之间的所有偶数。
3. 遍历Maps
fun main(args: Array<String>) {
//使用TreeMap保证插入后是有序的.
val binaryResp = TreeMap<Char, String>()
for( c in 'A'..'F') {
//将Integer转化为二进制格式
val binary = Integer.toBinaryString(c.toInt())
//相当于Java的binaryReps.put(c, binary)
binaryResp[c] = binary
}
for((letter, binary) in binaryResp) {
println("$letter = $binary")
}
}
输出:
A = 1000001
B = 1000010
C = 1000011
D = 1000100
E = 1000101
F = 1000110
4. 遍历列表
fun main(args: Array<String>) {
val list = arrayListOf<String>("10", "11", "1001")
//同时取出下标和元素
for ((index, element) in list.withIndex()) {
println("$index: $element")
}
//只取下标
for(index in list.indices) {
println("$index")
}
//只取元素
for(element in list) {
println("$element")
}
}
5. 使用in判断是否在区间内
//判断一个字符是否是字符
fun isLetter(c:Char) = c in 'a'..'z' || c in 'A'..'Z'
//判断一个字符是否不是数字
fun isNotDigit(c:Char) :Boolean = c !in '0'..'9'
//相当于Java的“Java” <= “Kotlin” && “Kotlin” <= “Scala”
println("Kotlin" in "Java".."Scala")
在when分支中使用in
fun recognize(c:Char) = when(c) {
in '0'..'9' -> "It's a digit"
in 'a'..'z', in 'A'..'Z' -> "It's a letter"
else -> "I don't know"
}
网友评论