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

Funzioni infix in Kotlin

In questo articolo, imparerai a chiamare le funzioni con il simbolo infix in Kotlin (attraverso esempi).

Prima di imparare a creare funzioni con notazione infix, esaminiamo due funzioni infix comuni.

Quando si usa || e &&& l'editor cerca le funzioni or e and e le chiama in background.

Queste funzioni supportano la notazione infix.

Esempio: funzioni or & and in 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")
}

Quando si esegue il programma, l'output è:

result = true
result = false

Nel programma sopra, usa a or b al posto di a.or(b) e a and b al posto di a.and(b). Questo è permesso perché queste funzioni supportano la notazione infix.

Come creare una funzione con notazione infix?

Puoi usare la notazione infix per chiamare le funzioni in Kotlin, se la funzione

  • SonoFunzione membro(oFunzione estensione).

  • Ha un solo parametro.

  • Con la parola chiave infix.

Esempio: funzione definita dall'utente con notazione 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)
}

Quando si esegue il programma, l'output è:

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

In questo caso, createPyramid() è una funzione infix per creare la struttura della piramide. È un membro della classe Structure e accetta un parametro di tipo Int, iniziando con la parola chiave infix.

Il numero delle righe della piramide dipende dai parametri passati alla funzione.