学习资源
Kotlin Koans:Kotlin 在线练习题,适合有一定基础的Kotlin学习者。
简单介绍下该如何去做练习,链接中左边为练习的目录,中间为代码编辑器,右边为这道练习题的介绍。建议在做之前去点一下介绍中高亮的链接,有助于理解。同时博主是一边看《Kotlin in Action》一边练习的,所以这边给出每章读完适宜去做哪几个练习,在给予练习答案的同时,一并讲解所涉及的知识点。
2 kotlin基础
学完第二章后,大概掌握了函数和变量,类和属性,字符串,when表达式,职能转换,for循环,迭代区间,in等知识,适宜去做接下来几个练习。
Hello, world!
本题的目的是让我们写一个start函数,并返回字符串"OK"。
我们点开链接,有如下四行代码:
1.一个具有两个Int输入参数和Int返回参数的函数。
fun sum(a: Int, b: Int): Int {
return a + b
}
2.方法可以以表达式形式,由编译器推断出应该返回的类型。
fun sum(a: Int, b: Int) = a + b
3.方法也可以没有返回值(使用Unit)
fun printSum(a: Int, b: Int): Unit {
println("sum of $a and $b is ${a + b}")
}
//结果
sum of -1 and 8 is 7
4.Unit也可以忽略
fun printSum(a: Int, b: Int) {
println("sum of $a and $b is ${a + b}")
}
看完链接就知道该怎么在todo处填写代码了。
fun start(): String = "OK"
成功后会显示:Passed:testOK。实在想不出来也可以点击Revert按钮右边的show answer按钮。
Data classes
简单来说,就是让我们写一个类,以实现右边代码中的功能。
我们使用数据类,相比于java中要写get和set函数,而在kotlin中不需要写这些函数。属性可以是只读属性(val)和可写属性(var),只读属性有一个getter,可写属性既有getter和setter。
data class Person(val name: String,var age: Int)
当我们调用Person实例的age属性,相当于是java中调用get函数,而我们更改其值时又相当于调用set函数。
val person = Person("Bob",15)
println(person.age)
person.age = 20
println(person.age)
我们也可以自定义访问器。
data class NewPerson(val name: String,val age: Int)
{
val isOld:Boolea