请稍等 ...
×

采纳答案成功!

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

这个receiver搞的我很懵逼

网上很多包括郭霖大神关于函数都说可以认为是方法,老师这个receiver加的我看了三遍还是没看懂这个函数

正在回答

2回答

首先,receiver不是我加的,他本身就是存在的,是众多有函数类型的语言都存在的概念,例如 javascript,甚至 C语言。Kotlin自然也不例外,官方文档当中也随处可见 receiver 这样的叫法,在Kotllin的反射库当中反射获取到函数还有个 receiver 的属性来获取函数绑定的 receiver 。 其次,Java当中的方法method实际上都是有 receiver 的函数,所以说方法就是函数本身没毛病。反过来,函数可以没有receiver,在Kotlin当中表现为顶级函数(也就是定义在类外面的函数)。 再者,回避receiver这个概念只能让你暂时混过去了,你但凡想深入一下函数,哪怕是看一下 forEach 的源码,你都会遇到 receiver 的问题。所以,不管哪个大神说什么,逃避不是解决问题的办法。 那什么是 receiver 呢? 就是一个函数的调用者,例如 x.toString(),x 就是 toString 函数的 receiver。为什么会叫 receiver而不是 invoker或者其他叫法呢?因为最早的类似于C语言这样的语言并没有面向对象的语法支持,所有的函数都是独立的不从属于所谓的类型,调用的时候如果想要作用于某一个特定的"对象",就需要把他传进去,函数被认为是一个消息,这个"对象"就是消息的接收者。 其实挺简单,理解不了没关系,你只是一时半会儿接受不了这个概念而已,过两天再来看就好了。
2 回复 有任何疑惑可以回复我~
提问者 远方的鸾 2021-01-04 22:53:30

我问出来就后悔了,然后发现不能撤回,其实心里也大概明白难的也不是receiver,只是自己理解不了对自己生气,一时冲动就发出来了。关于receiver后边我单独看了那两分钟好几遍感觉确实没什么,因为只接触过java语言,对后边的函数引用,函数类型,默认参数,具名参数,多返回值都是没接触过的概念,函数类型和函数引用这两个概念对于我来说一时确实难以消化,我没想明白到底在哪能用的到,为什么要这么做,明天我在看两遍加深下理解,感谢老师对我这么无知的问题做出解答

0 回复 有任何疑惑可以回复我~
  • 没事儿,有问题就要提出来,都不是什么大事儿,加油!~
    回复 有任何疑惑可以回复我~ 2021-01-04 23:30:48
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号