函数的声明
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
函数的声明以关键字fun开始,函数名称紧随其后,接下来是括号括起来的参数列表。参数列表后跟着的返回值类型,他们之间用一个冒号隔开。花括号包括的是函数体,return关键字与java相比没有变化。
kotlin中的if是表达式,而java中的if是语句,因为kotlin中if携带返回值的,而java中的if只有分支判断的能力。故,上面的例子中可以把整个if表达式作为返回值进行返回。
表达式函数体
对于上面的例子我们可以改为:
fun max(a: Int, b: Int): Int = if (a > b) a else b
看起来该函数更加简洁,省略的花括号和return关键字,外加一个=号。这种函数称为表达式体函数,上面的的函数样式属于代码块体函数。
上面的例子还可以继续简化:
fun max(a: Int, b: Int) = if (a > b) a else b
去掉返回值类型,或者叫隐藏返回值类型,因为kotlin和java一样都是静态类型语言,变量和表达式只能有一种类型被编译器理解。当一个变量或者表达式类型唯一,通过类型推倒原则,是可以不声明的,编译器会帮你指定。
空实现函数
Java代码中经常会看到一些空实现函数,比方说实现了一个接口,接口中有几个方法都需要实现,但是你可能只会用到其中的一个方法,这就很让人难受,不得不空实现,但又没什么用还需要写方法体。kotlin中可以这么写,举例:
public fun onClick() = Unit
Java中你必须这么写:
public void onClick() {
}
一行搞定,还不需要花括号,让代码更接近现实逻辑思维。