所以我只是在和Kotlin玩,不能让我的头周围关于这一点。
fun itsAfunction() = 10
fun check(function:()->Int):Int{
return function() + 9
}
val result = check(itsAfunction)
为什么我不能在函数检查中传递函数?
如果我做了这样的事,这将被接受
val result = check({itsAfunction})
问题是函数和lambda之间的区别是什么?我总是坚韧两者是相同的,但在这种情况下不是。
谢谢
2条答案
按热度按时间t3psigkw1#
如果你想把一个类的函数作为参数传递,你应该使用函数引用(也叫可调用引用/函数文本)。
但是下面的代码是等价的(afaik):
如果将
check
函数设置为inline
:9njqaruj2#
Kotlin中的函数已命名或声明,但Lambda是未声明或匿名函数
命名函数不能作为参数传递给函数。
通过创建一个函数类型的变量并在函数调用中作为参数传递,可以解决上述问题