今天看到了kotlin一个很好玩的用法
在kotlin中给一个对象扩展方法是很简单的事,比如,我要给Int对象添加一个方法,这个方法有一个参数,返回一个该参数和这个对象的和
fun Int.add(s: Int): Int { return s + this }
然后你就可以
val result = 1.add(3)
只要是Int类型就可以直接调用add方法
然后今天看到了kotlin接收器,怎么理解呢?(以下纯属个人理解,如有不同意见欢迎交流)
kotlin的函数接收器本质上和拓展函数是一样的,但是他要比函数拓展要强大
还是刚才这个例子
val receiver: Int.(s: Int) -> Int = { value -> value + this }
这样写比函数拓展的好处在于,你不仅可以像之前那样调用Int的方法,还可以像下面这样直接用
var resultA = 1.add(3) val resultB = add(1, 3)
第二种写法里,第一个参数表示的是.前面那个对象本身,第二个开始表示这个对象之后的具体参数
怎么样,理解了吗?那么下面我写了个测试题,做一个测试题看一下自己的理解程度吧
其中log()方法会打印当前传入的对象,试着猜测一下调用test之后的打印结果吧
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
----------------答案分割线----------------
按顺序打印,结果如下,怎么样答对了吗?O(∩_∩)O~