2

在以下代码中(在 kotlin 中)

fun greet(){
    print("Hello!  ")
}
fun salute(){
    print("Have a nice day ")
}


fun main(args: Array<String>){

    //val todoList: List<()->Unit> = listOf(::greet,::salute)
    val todoList: List<()->Unit> = listOf({greet()},{salute()})

    for(task in todoList){
        task()
    }    
}

使用现在注释的第一种方式(函数引用)与使用第二种方式(仅在 lambda 中调用函数)相比有什么意义

就结果而言,两者都打印“你好!祝你有美好的一天”

4

1 回答 1

1

在此处输入图像描述

您可以通过您的 ide 检查签名。

:: 是从方法中获取 KFunction 类型的反射操作

val f2 = { greet() } 就是:你创建一个新的 lambda 语句,比如

() ->  () -> Unit  

然后调用内陆 lambda

于 2019-07-18T03:07:37.610 回答