在 Java 中有 switch 语句,在 Kotlin 中使用 when 来代替 switch when 括号里是参数,参数是可选的。箭头(->) 左边是条件分支,右边是对应的逻辑体
when 不需要向 switch 那样需要加上 break 语句,符合条件自动具有 break 功能
如果逻辑体代码比较多,可以放到花括号({})里:
when(parameter){
branch1 -> logic
branch2 -> logic
}
when(parameter){
branch1 -> {
//...
}
branch1 -> {
//...
}
}
匿名函数
匿名函数顾名思义就是没有名字的函数:如
fun(x: Int, y: Int): Int {
return x + y
}
匿名函数的返回类型的推导机制和普通函数一样:
fun(x: Int, y: Int) = x + y
如果声明了一个匿名函数 ,如何调用呢?
(fun(x: Int, y: Int): Int {
val result = x + y
println("sum:$result")
return result
})(1, 9)
输出结果:
sum:10
函数引用
在 成员引用操作符 后面是函数名的就是函数引用,例如:
// 函数引用
val fk = Book::present
属性引用 会生成一个内部类实现了 KProperty 接口,同理,函数引用 内部也会生成一个内部类,只不过这个类实现了 KFunction 接口
所以 Book::present 返回值是 KFunction 类型
可以用过 KFunction 来打印函数名称和函数调用:
val fk = Book::present
// 函数名称
println("function name is ${fk.name}")
// 函数调用
println(fk.call(book))
输出结果:
function name is present
book's name = Kotlin从入门到放弃, author = Chiclaim, Johnny