Day 2
Kotlin学习之旅的第二天
今天让我们完成 基础语法 的学习
前言
昨天,我们学习了一部分的基础语法,文章链接:Kotlin学习之旅(D1)-学习计划&基本语法
最后还剩下三个基础语法没学:
- for循环和while循环
- when表达式
- 遍历集合
今天让我们一个个解决掉~
循环
for循环
在Java,C,Python等各种编程语言中,都会有循环控制,其中for循环又是最为常见的,在Kotlin中,for循环的语法为:
for(item in collection){
print(item)
}
通过 in 关键字来进行循环,当然,也可以指定范围:
for (i in 1..3){
println(i)
}
通过 “…” 表示范围,那么如果是只取奇数,或者偶数呢?间隔3个数取值呢?这时候就要用到 step 关键字了
for(i in 1..6 step 2){
println(i)
}
输出结果为:
1
3
5
因为我们取值范围是1-6,每隔1个取值(step 2)
好了,那么如果我们希望从大到小取值呢,kotlin里面提供了一个downTo关键字
for (i in 6 downTo 0 step 2) {
println(i)
}
这个函数的输出结果就是:
6
4
2
0
因为我们取值范围是6-0,每隔1个取值(step 2)
除了最基本的int型,我们还可以取数组的值:
fun main(args: Array<String>) {
val array = arrayOf("a", "b", "c")
for (i in array.indices) {
println(array[i])
}
}
其他的集合类型我们会在后面的 遍历集合 里面再讲
while循环
while循环的语法比较简单:
while (x > 0) {
x--
}
do {
val y = retrieveData()
} while (y != null) // y is visible here!
通常是 while(“条件语句”) { … } 或者是 do { … } while(“条件语句”)
when表达式
上面讲的 for 和 while 在 Java里面都有,所以看一遍基本上就差不多了,但是when表达式,在Java里面是没有的,比较相像的是switch语句,其实when也是条件判断,或者说是控制流的一种。
基本用法:
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}
但是when表达式有个很厉害的地方,他可以接收表达式,或者是普通的语句,什么意思呢?看个例子就明白了:
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}
如果是switch语句,那么case的条件里面只能是string类型,但是在when里面则灵活许多,可以是1-10范围内的数字,可以使用"!"表示“非”,甚至可以在里面调用方法:
when {
x.isOdd() -> print("x is odd")
x.isEven() -> print("x is even")
else -> print("x is funny")
}
虽然这种条件判断我们也可以通过if…else 来实现,但是阅读起来,还是when表达式比较好理解。
遍历集合
一边遍历集合都会在for循环里面使用,例如:
fun main(args: Array<String>) {
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}
}
输出结果为:
apple
banana
kiwifruit
同样的,在while循环中也可以遍历集合:`
fun main(args: Array<String>) {
val items = setOf("apple", "banana", "kiwifruit")
when {
"orange" in items -> println("juicy")
"apple" in items -> println("apple is fine too")
}
}
这里虽然不太明显,但是其实通过 “orange” in items 判断 "orange"是否在items中的时候,就需要遍历整个集合,所以说 “in” 关键字的作用就是遍历
总结
好了,基础知识到这里就全部讲完了,这两天学到的基本语法在日常开发中我们经常会用到,貌似Kotlin的特性我们一个都还没说,例如:空安全,lambda表达式,如何自动生成getter和setter的类等等,这些我们会在接下来为期3天的高级语法之旅中进行学习。
这两天的基础语法其实就是让大家对kotlin这门语言有一点印象,想要真正要写出优雅,可读,高效的代码,我们还需要进行其他的理论学习,再加上不断不断的实践。
Day 2 - Learning Kotlin Trip,Completed.