0Pricing
Kotlin Academy · Lezione

Funzioni infix

Chiamate di funzione leggibili

Funzioni infix è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.

Che cos'è una funzione infix

Una funzione infix può essere chiamata senza il punto o le parentesi: a func b. La contrassegni con la parola chiave infix.

infix fun Int.times2(factor: Int) = this * factor

fun main() {
    println(3 times2 4)
}

Regole per infix

Una funzione infix deve essere una funzione membro o di estensione, accettare esattamente un parametro, che non deve essere vararg né avere un valore predefinito.

infix fun Int.plusBy(other: Int) = this + other

fun main() {
    println(5 plusBy 7)
}

Funzioni infix predefinite

Molte funzioni standard sono infix: to (crea un Pair), and, or, shl e, per gli intervalli, until, downTo, step.

fun main() {
    val pair = "key" to 42
    println(pair)
    for (i in 1 until 4) print(i)
}

Creare un Pair con to

La familiare sintassi delle mappe "a" to 1 è semplicemente la funzione infix to che restituisce un Pair.

fun main() {
    val map = mapOf(1 to "one", 2 to "two")
    println(map[2])
}

Infix come funzione membro

Le funzioni infix possono essere membri, consentendo di scrivere espressioni fluide specifiche del dominio.

class Money(val cents: Int) {
    infix fun add(o: Money) = Money(cents + o.cents)
}

fun main() {
    val total = Money(100) add Money(50)
    println(total.cents)
}

Prima di tutto, la leggibilità

Infix dà il meglio di sé quando la chiamata si legge come una frase. Scelga nomi simili a verbi, così a name b risulta naturale.

infix fun String.repeatedTimes(n: Int) = this.repeat(n)

fun main() {
    println("ab" repeatedTimes 3)
}

Precedenza delle chiamate infix

Le chiamate infix hanno una precedenza inferiore a quella dell'aritmetica, ma superiore a quella dei confronti. Aggiunga le parentesi quando le combina, per maggiore chiarezza.

infix fun Int.combine(o: Int) = this * 10 + o

fun main() {
    println(1 combine 2 + 3)
}

Il ricevitore this

In un'estensione infix, this è l'operando sinistro; il parametro è l'operando destro.

infix fun Int.minus2(o: Int) = this - o

fun main() {
    println(10 minus2 3)
}

Concatenare le chiamate infix

Le chiamate infix sono associative a sinistra, quindi è possibile concatenarle.

infix fun Int.then(o: Int) = this + o

fun main() {
    println(1 then 2 then 3)
}

Eviti di usare troppo infix

Infix elimina punti e parentesi, cosa che può ridurre la chiarezza per le operazioni non ovvie. Lo utilizzi solo quando la lettura migliora.

infix fun Int.power(exp: Int): Int {
    var r = 1
    repeat(exp) { r *= this }
    return r
}

fun main() {
    println(2 power 5)
}

Un esempio fluido

Infix può rendere le asserzioni o i builder quasi leggibili come l'inglese.

infix fun String.shouldStartWith(prefix: String) =
    this.startsWith(prefix)

fun main() {
    println("kotlin" shouldStartWith "kot")
}

Verifica rapida

Verifichi la Sua comprensione delle funzioni infix.

Riepilogo

Ha imparato le funzioni infix:

  • Le contrassegni con infix e le chiami come a func b.
  • Devono essere funzioni membro o di estensione con un parametro non vararg e senza valore predefinito.
  • to, until e downTo sono funzioni infix predefinite.
  • Le utilizzi quando migliorano davvero la leggibilità.
infix fun Int.add(o: Int) = this + o

fun main() {
    println(4 add 6)
}

Domande Frequenti

La lezione «Funzioni infix» è gratuita?

Sì — il testo completo di «Funzioni infix» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.

Cosa imparerò in «Funzioni infix»?

Chiamate di funzione leggibili Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Kotlin Academy?

Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Funzioni infix»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?

Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Funzioni infix
  2. Creazione di API simili a DSL
  3. Funzioni tailrec
  4. Quando utilizzare ciascuna opzione
← Torna a Kotlin Academy