kotlin函数接收器

今天看到了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~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值