Kotlin学习之旅(D2)-基本语法

Kotlin学习之旅的第二天

今天让我们完成 基础语法 的学习

前言

昨天,我们学习了一部分的基础语法,文章链接:Kotlin学习之旅(D1)-学习计划&基本语法

最后还剩下三个基础语法没讲:

  • for循环和while循环
  • when表达式
  • 遍历集合

今天让我们一个个解决掉~

循环

for循环

在Java,C,Python等各种编程语言中,都会有循环控制,其中for循环又是最为常见的,在Kotlin中,for循环的语法为:

1
2
3
for(item in collection){
print(item)
}

通过 in 关键字来进行循环,当然,也可以指定范围:

1
2
3
for (i in 1..3){
println(i)
}

通过 “..” 表示范围,那么如果是只取奇数,或者偶数呢?间隔3个数取值呢?这时候就要用到 step 关键字了

1
2
3
for(i in 1..6 step 2){
println(i)
}

输出结果为:

1
2
3
1
3
5

因为我们取值范围是1-6,每隔1个取值(step 2)

好了,那么如果我们希望从大到小取值呢,kotlin里面提供了一个downTo关键字

1
2
3
for (i in 6 downTo 0 step 2) {
println(i)
}

这个函数的输出结果就是:

1
2
3
4
6
4
2
0

因为我们取值范围是6-0,每隔1个取值(step 2)

除了最基本的int型,我们还可以取数组的值:

1
2
3
4
5
6
fun main(args: Array<String>) {
val array = arrayOf("a", "b", "c")
for (i in array.indices) {
println(array[i])
}
}

其他的集合类型我们会在后面的 遍历集合 里面再讲

while循环

while循环的语法比较简单:

1
2
3
4
5
6
7
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也是条件判断,或者说是控制流的一种。

基本用法:

1
2
3
4
5
6
7
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}

但是when表达式有个很厉害的地方,他可以接收表达式,或者是普通的语句,什么意思呢?看个例子就明白了:

1
2
3
4
5
6
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范围内的数字,可以使用”!”表示“非”,甚至可以在里面调用方法:

1
2
3
4
5
when {
x.isOdd() -> print("x is odd")
x.isEven() -> print("x is even")
else -> print("x is funny")
}

虽然这种条件判断我们也可以通过if…else 来实现,但是阅读起来,还是when表达式比较好理解。

遍历集合

一边遍历集合都会在for循环里面使用,例如:

1
2
3
4
5
6
fun main(args: Array<String>) {
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}
}

输出结果为:

1
2
3
apple
banana
kiwifruit

同样的,在while循环中也可以遍历集合:`

1
2
3
4
5
6
7
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.


本文结束啦感谢您的阅读