gpt4 book ai didi

kotlin - 对 lamda 和函数的困惑

转载 作者:行者123 更新时间:2023-12-01 13:19:17 26 4
gpt4 key购买 nike

所以我只是在玩 kotlin,无法解决这个问题。

    fun itsAfunction() = 10
fun check(function:()->Int):Int{
return function() + 9
}

val result = check(itsAfunction)

为什么我不能在函数检查中传递一个函数?

如果我做了这样的事情,这将被接受

val result = check({itsAfunction})

问题是函数和 lambda 有什么区别?我总是认为两者是一样的,但在这种情况下却不是。

谢谢

最佳答案

如果你想将一个类的函数作为参数传递,你应该使用函数引用(也称为可调用引用/函数文字)。

val result = check(::itsAfunction)

但以下内容是等效的 (afaik):

val result = check { itsAfunction() } //<-- enclosing () is omitted because trailing lambda

如果您将check 函数设为内联:

inline fun check(func: () - > Int) = func() + 9

关于kotlin - 对 lamda 和函数的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51349787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com