带接收者的函数字面值与解构声明详解

带接收者的函数字面值:

Kotlin提供了这样一种功能:可以通过指定的接收者对象来调用一个函数字面值。在函数字面值内部,你可以调用接收者对象的方法而无需使用任何额外的修饰符,这一点非常类似于扩展函数,下面来看一下代码:

好怪异的语法,其中看到通过“.”的方式来声明了一个Int的函数字面值,其中函数的类型是接收一个Int参数返回一个Int:

而函数体为:

下面使用一下它:

另外匿名函数语法可以让我们指定函数字面值的接收者类型,这样,我们就可以先去声明一个带有接收者的函数类型变量,然后再去使用它,下面看下代码:

注意:其函数的实现是不能放在花括号里面的,如下:

注意这俩代码的区别:

此外,带有接收者类型的函数的非字面值可以作为参数进行传递,前提是所需要接收函数的地方应该有一个接收者类型的参数,反之依然,比如说:String.(Int) -> Boolean与(String, Int)-> Boolean是等价的,下面用代码进行说明:

为了说明"String.(Int) -> Boolean与(String, Int)-> Boolean是等价的",下面用代码来论证下:

 

说实话,这种代码比较不好理解,需要花时间去适应。

解构声明:

直接看一下代码:

以上是传统的方式,其实可以用解构声明一次性返回多个结果,如下:

其实有个Pair系统类也可以做为方法的返回值,然后有解构声明来输出,如下:

其中Pair其实也是一个object class,如下:

这样一个方法就可以返回多个结果了,不过官方建议使用第一种纯自己定义的方式,因为比较清楚也比较灵活。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

webor2006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值