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函数,它是有使用条件的。要是能结合委托和回调应该会更简便,以后理解加深了再试试。

猜你喜欢

转载自blog.csdn.net/liny70858/article/details/129041791