那么我们什么时候使用val什么时候使用var呢?
永远优先使用val来声明一个变量,而当val没有办法满足你的需求的时候再使用var,这样设计出来的程序会更加的健壮,也更加符合高质量的编程规范.
fun main() {
//Kotlin语法代码的结尾不需要加分号
val a = 10
println("a = " + a)
}
//显示的声明一个整形变量a的值为10
val a: Int = 10
fun methodName(param1: Int, param2: Int): Int {
return 0
}
按照上述逻辑定义一个返回两数中较大数的函数
fun largeNumber(param1: Int, param2: Int): Int {
return max(param1, param2)
}
在Kotlin中当一个函数只有一行代码的时候,Kotlin允许我们不必编写函数体,可以直接将唯一一行代码写在函数定义的尾部,中间用等号连接即可,这个机制叫做语法糖
所以上面这个返回大数的函数可以简写为
fun largeNumber(param1: Int, param2: Int): Int = max(param1, param2)
合理使用Kotlin函数的语法糖可以简化我们的开发
在Kotlin当中的if语句和java当中的if语句几乎没有什么区别.
只不过在Kotlin当中的if语句有一个额外的功能,它可以有返回值,返回值就是在每一个条件中的最后一行代码的返回值
将返回大数的函数逻辑重写
fun largeNumber(param1: Int, param2: Int): Int {
var value = if (param1 > param2) {
param1
} else {
param2
}
return value
}
fun largeNumber(param1: Int, param2: Int): Int = if (param1 > param2) {
param1
} else {
param2
}
编写一个根据姓名返回考试成绩的函数
/**
* 根据姓名返回对应的分数
*/
fun getScore(name: String) = if (name == "Tom") {
86
} else if (name == "Jim") {
77
} else if (name == "Jack") {
99
} else {
0
}
能够实现,但是if-else导致代码比较冗余,在Kotlin当中当判断条件比较多的时候,就是应该考虑when语句的时候
fun getScore(name: String) = when (name) {
"Tom" -> 86
"Jim" -> 77
"Jack" -> 99
else -> 0
}
when版本的代码就变得干净清爽了许多,另外when和if语句一样也是可以有返回值的,因此上述代码也可以采用语法糖进行编写
when语句除了支持精确匹配之外,还支持类型匹配,例如下面这个代码
/**
* when语句匹配类型
*/
fun checkNumber(num: Number) {
when(num) {
is Int -> println("Number is Int")
is Double -> println("Number id Double")
else -> println("Number not support")
}
}
when语句还有一种不带参数的写法,具备了比较强的扩展性,以上面的getScore函数为例子
fun getScore(name: String) = when {
name == "Tom" -> 86
name == "Jim" -> 77
name == "Jack" -> 99
else -> 0
}
fun getScore(name: String) = when {
name.startWith("Tom") -> 86
name == "Jim" -> 77
name == "Jack" -> 99
else -> 0
}
val range = 0..10
fun main() {
for(i in 0..10) {
println(i)
}
}
val range = 0 until 10
fun main() {
for (i in 0 until 10 step 2) {
println(i)
}
}
fun main() {
for(i in 10 downTo 1) {
println(i)
}
}