fun hello() = {
println("sda")
}
fun main() {
hello()
}
猜猜会输出什么?
这个放在编辑器中肯定容易看出来,因为编辑器会进行提示。其实上面的代码什么也不会输出。以上代码放在编辑器中,当我们的鼠标指向hello函数时,会出现以下提示public fun hello(): () → Unit,也就是说hello函数的返回值是一个函数类型:() → Unit,如果想要输出,而需要在main函数中替换为hello.invoke()。这样才会调用hello函数。
上面代码如果改为以下形式就很好发现。
fun hello(): () -> Unit = {
println("sda")
}
其实我们迷惑的原因还是{}这个,这个在kotlin中使用十分频繁,是lambda表达式。在kotlin中lambda表达式,扩展函数等特性是十分好用的。
原文:https://www.cnblogs.com/sowhappy/p/15226141.html