请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么函数引用可以调用 FuncRef.invoke() 而函数不可以调用 Func.invoke() 呢?

fun main() {
    // 下述代码没有报错
    val funcRef = ::add
    funcRef.invoke(1, 2)
    // 下述代码报错
    add.invoke(1, 2)
}

fun add(a: Int, b: Int) = a + b

正在回答 回答被采纳积分+3

1回答

提问者 滥觞LanShang 2022-12-03 22:39:18

懂了,funRef 是 Function2 类的对象,invoke 则是函数类的方法。

0 回复 有任何疑惑可以回复我~
  • 对。add 是函数名,不是函数引用,如果使用函数名调用函数,就直接 add(1, 2) 就行了。这个跟 C/C++ 当中还是不一样的,C/C++ 当中的函数名可以当成函数地址去用,Kotlin 当中不行。
    回复 有任何疑惑可以回复我~ 2022-12-04 08:58:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信