gpt4 book ai didi

lambda - 为什么在 Kotlin 中将变量传递给 lambda 有效?

转载 作者:行者123 更新时间:2023-12-02 12:42:41 25 4
gpt4 key购买 nike

假设我有接受 lambda 作为参数的高阶函数,如下所示:

fun getNum(op: () -> Int) = op()

还有一个返回数字的函数:
fun getTen() = 10

在主函数中,我可以调用 getNum()像这样的功能
fun main(args: Array<String>){
val x = 50
val a = getNum(::getTen) // a == 10
val b = getNum{x} // this works and b == 50
}

为什么传递变量而不是 lambda 有效?任何的想法?谢谢。

最佳答案

在 Kotlin 中,lambda 中的最后一个或单个表达式 is the return value .

getNum { x }表达式,{ x }是具有单个表达式的 lambda x在其中,因此被认为是返回值,因此当调用 lambda 时,它只计算 xclosure 中捕获并将其值返回到 getNum .
getNum(::getTen)反过来,调用是使用 callable reference (可通过 :: 符号区分),它可以作为函数类型 () -> Int 的值传递就像它是 getNum { getTen() } 一样.

见:Lambda Expressions and Anonymous Functions在语言引用中。

关于lambda - 为什么在 Kotlin 中将变量传递给 lambda 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52047687/

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