English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Funciones infix en Kotlin

En este artículo, aprenderá a llamar a funciones con el símbolo infix en Kotlin (con ejemplos).

Antes de aprender a crear funciones con notación infix, estudiemos dos funciones infix comunes.

Al usar || y &&& el compilador busca las funciones or y and respectivamente, y las llama en segundo plano.

Ambas funciones admiten notación infix.

Ejemplo: funciones or y and de Kotlin

fun main(args: Array<String>) {
    val a = true
    val b = false
    var result: Boolean
    result = a or b // a.or(b)
    println("result = $result")
    result = a and b // a.and(b)
    println("result = $result")
}

Al ejecutar el programa, la salida es:

result = true
result = false

En el programa anterior, utilice a or b en lugar de a.or(b), y utilice a and b en lugar de a.and(b). Esto está permitido porque ambas funciones admiten notación infix.

¿Cómo crear una función con notación infix?

Puede usar notación infix para llamar a funciones en Kotlin, si la función

  • esFunción miembrooExtensión de función).

  • Tiene solo un parámetro.

  • marcado con la palabra clave infix.

Ejemplo: función definida por el usuario con notación infix

class Structure() {
    infix fun createPyramid(rows: Int) {
        var k = 0
        for (i in 1..rows) {
            k = 0
            for (space in 1..rows-i) {
                print(" ")
            }
            while (k != 2*i-1) {
                print("* )
                ++k
            }
            println()
        }
    }
}
fun main(args: Array<String>) {
    val p = Structure()
    p createPyramid 4       // p.createPyramid(4)
}

Al ejecutar el programa, la salida es:

      * 
    * * * 
  * * * * * 
* * * * * * *

Aquí, createPyramid() es una función infix para crear la estructura de la pirámide. Es un miembro de la clase Structure y solo acepta un parámetro de tipo Int, comenzando con la palabra clave infix.

El número de filas de la pirámide depende de los parámetros pasados a la función.