gpt4 book ai didi

lambda - Kotlin:为什么函数不能存储在变量中?

转载 作者:行者123 更新时间:2023-12-02 11:22:02 27 4
gpt4 key购买 nike

为什么我必须使用函数引用将函数存储到变量中:

fun someFunction(i: Int): Unit = println(i)
val funVal = someFunction // Compile error!
val funVal2 = ::someFunction // Function reference works fine

但是我可以直接将 lambda 存储在变量中:

val someLambda: (Int) -> Unit = { i: Int -> println(i) }

最佳答案

这是关于正确的语法。或者更准确地说,关于编译器理解您想要告诉它什么的能力!

当您查看不同的示例时,您会发现接受的案例使用特定的字符,例如冒号。这使得推断代码的含义变得更加容易。

因此,一个可能的原因可能是权衡。当然,当你有

val a = b

您可以允许 b 作为方法引用。但是如果您想调用 b() 该怎么办?! b 和 b() 之间的“字典顺序”距离非常小!

因此,不允许使用该语法会使 a) 更容易解析代码,b) 更难让小拼写错误改变代码的含义!

关于lambda - Kotlin:为什么函数不能存储在变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796655/

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