gpt4 book ai didi

intellij-idea - 为什么我可以使用 lambda 表达式的名称,但不能使用函数的名称?

转载 作者:行者123 更新时间:2023-12-04 05:58:34 24 4
gpt4 key购买 nike

<分区>

我可以使用“小”函数定义“大”函数:

fun apply3(a:Int, b:Int, c:Int, func: (Int,Int,Int)->Int ): Int{
return func(a,b,c)
}

我可以这样调用它:

println(apply3(1,2,3,{a,b,c->a+b+c}))

另一方面,如果我想多次使用同一个函数并为其命名,我就会遇到问题:

val plus1: (Int,Int,Int)->Int = {a,b,c->a+b+c}  //this is OK
...
fun plus2(a:Int, b:Int, c:Int)=a+b+c // this too
...
println(apply3(1,2,3,plus1)) // this is allowed
...
println(apply3(1,2,3,plus2)) // this is NOT allowed

最后一行是禁止的。附留言:

Type mismatch
Required: (Int,Int,Int)->Int
Found: Int

为什么?对我来说,plus2 和 plus2 是一样的东西吗?

This post有一个建议在我的情况下使用::plus2 的答案。这在技术上有所帮助,但并未解释这两个功能之间的区别。

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