infix函数的使用

注:以下均个人理解,如有错误,欢迎指正。

为什么使用infix函数

infix函数可以理解为扩展函数的延伸,为了使代码更具有可读性。

使用条件

infix函数是有使用条件的:

  1. 必须依附类存在,这也是为什么我说infix是扩展函数的原因。
  2. 必须只接收一个参数,什么类型无所谓,泛型也可以。

如何使用

一个简单的例子

代码如下:

infix fun String.add(other: String):String{
    val builder=StringBuilder()
    builder.append(this,other)
    return builder.toString()
}

使用时:

val String= "StringA" add "StringB"

这里展示了一个最简单的infix函数的使用,给String类扩展一个函数,名为add,作用是使两个字段相加。

结果是:“StringAStringB”


结合泛型使用

结合泛型函数

代码如下:

infix fun <A, B> A.with(other: B): Pair<A, B> {
    return Pair(this, other)
}

使用时:

val map= mapOf("aa" with "bb","cc" with "dd")

这个函数是模仿mapto来写的,作用与to相同。可见,infix函数大大增强了代码的可读性。


结合泛型类

代码如下:

infix fun <T> Collection<T>.has(other: T):Boolean{
    return contains(other)
}

使用时:

val list= listOf("aa","bb" )
    if(list has "aa")

这个函数是在Collection接口类上进行扩展的,将contains功能转变成has


最后

infix函数首先是一个扩展函数,然后才是infix函数,它是有使用条件的。要是能结合委托和回调应该会更简便,以后理解加深了再试试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值