Kotlin 在lambda中调用函数和函数引用之间的区别
在以下代码中(在kotlin中)Kotlin 在lambda中调用函数和函数引用之间的区别,kotlin,function-reference,Kotlin,Function Reference,在以下代码中(在kotlin中) fun问候(){ 打印(“你好!”) } 趣味礼炮{ 打印(“祝您有愉快的一天”) } 趣味主线(args:Array){ //val todoList:ListUnit>=listOf(::问候,::敬礼) val todoList:ListUnit>=listOf({greet()},{sallet()}) for(todoList中的任务){ 任务() } } 使用现在注释的第一种方法(函数引用)与使用第二种方法(仅在lambda中调用函数)相比
fun问候(){
打印(“你好!”)
}
趣味礼炮{
打印(“祝您有愉快的一天”)
}
趣味主线(args:Array){
//val todoList:ListUnit>=listOf(::问候,::敬礼)
val todoList:ListUnit>=listOf({greet()},{sallet()})
for(todoList中的任务){
任务()
}
}
使用现在注释的第一种方法(函数引用)与使用第二种方法(仅在lambda中调用函数)相比有什么意义
就结果而言,双方都打印“你好!祝您愉快”
您可以通过ide检查签名
::是从方法获取KFunction类型的反射操作
val f2={greet()}是这样的:创建一个新的lambda语句
像
然后打电话给内陆lambda,在这种情况下,这并不好。一般来说:1)括号较少(在更复杂的表达式中,您将填充括号)。2) 对于具有多个参数的函数,您不需要重新传递它们,因此您将赢得一些空间(并且您的表达式将变得更简单)。它本质上是等价的。用你认为读起来更好的。
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()
}
}
() -> () -> Unit