Uso de la función infijo

Nota: Los siguientes son todos entendimientos personales. Si hay errores, corríjame.

Por qué usar la función de infijo

La función de infijo puede entenderse como una extensión de la función de extensión, para hacer el código más legible.

Condiciones de Uso

La función infix es condicional para su uso:

  1. La clase dependiente debe existir, por eso dije que infix es una función de extensión.
  2. Solo se debe aceptar un parámetro, no importa de qué tipo sea, los genéricos también están bien.

cómo utilizar

un ejemplo sencillo

el código se muestra a continuación:

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

al usarlo:

val String= "StringA" add "StringB"

Aquí se muestra el uso de la función de infijo más simple, extendiendo una función a la clase String, llamada add, que se usa para agregar dos campos.

El resultado es: "StringAStringB"


Usar con genéricos

Combinar funciones genéricas

el código se muestra a continuación:

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

al usarlo:

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

Esta función está escrita imitando a map 's to , y tiene la misma función que to . Se puede ver que la función de infijo mejora en gran medida la legibilidad del código.


Combinando clases genéricas

el código se muestra a continuación:

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

al usarlo:

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

Esta función se extiende sobre la clase de interfaz Collection, transformando la función contains en has .


por fin

La función infija es una función de extensión primero, y luego la función infija, que tiene condiciones de uso. Debería ser más fácil si puede combinar delegados y devoluciones de llamadas, y vuelva a intentarlo cuando profundice su comprensión.

Supongo que te gusta

Origin blog.csdn.net/liny70858/article/details/129041791
Recomendado
Clasificación