kotlin中的迷惑代码(lambda表达式)

kotlin中的迷惑代码

fun hello() = { 
    println("sda")
}

fun main() {
    hello()
}

猜猜会输出什么?

这个放在编辑器中肯定容易看出来,因为编辑器会进行提示。其实上面的代码什么也不会输出。以上代码放在编辑器中,当我们的鼠标指向hello函数时,会出现以下提示public fun hello(): () → Unit,也就是说hello函数的返回值是一个函数类型:() → Unit,如果想要输出,而需要在main函数中替换为hello.invoke()。这样才会调用hello函数。

Kotlin 会自动推导函数返回值,但是需要注意两点:
  1. Kotlin 会自动推导函数返回值类型,但显式 return 也必须显式声明返回值类型。
  2. 使用 = 定义函数可以省略函数返回值类型。上面代码其实kotlin可以进行自动推导返回值类型。

上面代码如果改为以下形式就很好发现。

fun hello(): () -> Unit = { 
    println("sda")
}

其实我们迷惑的原因还是{}这个,这个在kotlin中使用十分频繁,是lambda表达式。在kotlin中lambda表达式,扩展函数等特性是十分好用的。

kotlin中的迷惑代码(lambda表达式)

上一篇:Electron-vue搭建vue全家桶+Element UI客户端(一)


下一篇:study29