关于函数类型(Foo,Int,Int)->Unit
来源:3-5 函数

我敲阔爱
2022-05-19
比如这样
fun test(foo:Foo,a:Int,b:Int){}和
class Foo{
fun met(a:Int, b:Int){}
}
是不是都可以用(Foo,Int,Int)->Unit来表示,这样以来不就区别不开有receiver和没有recevier了吗,Kotlin为什么要这么设计
写回答
2回答
-
qq_忘记
2023-01-15
区别不开就区别不开呗,我只关心最终调用的是哪个函数,并不关心声明的类型,函数变量又不是仅仅有声明就能用,必须要初始化,初始化的时候就知道它引用的是哪个函数,赋值::bar给它它就没有receiver,赋值Foo::bar给它它就有receiver。
00 -
bennyhuo
2022-05-19
因为receiver本来就是第一个参数,这基本上已经是编程语言设计上非常常见的做法了。如果一定要严格限制的话,很多函数都需要定义两个版本分别应对当做第一个参数或者receiver的情况。00
相似问题