Infix-Funktion — das ist eine Funktion, die in infix-Form (ohne Punkt und Klammern) aufgerufen werden kann, was die Lesbarkeit des Codes verbessert. Solche Funktionen sind zum Beispiel praktisch für die Erstellung von DSLs (domain-specific languages).
infix deklariert.Beispiel:
infix fun Int.add(x: Int): Int = this + x val result = 5 add 10 // 15
Kann man eine Infix-Funktion mit mehreren Parametern oder mit Standardparametern verwenden?
Antwort: Nein, das ist nicht möglich. Eine Infix-Funktion kann genau einen obligatorischen Parameter ohne Standardwert und ohne vararg haben.
Beispiel für eine ungültige Deklaration:
// Fehler! infix fun foo(a: Int, b: Int) { }
Geschichte
Im Projekt versuchten sie, eine Infix-Funktion zu implementieren, um Aufrufe von Builder-Funktionen durch lesbarere Infix-Ausdrücke zu ersetzen. Aufgrund des mangelnden Wissens über die Beschränkung der Parameteranzahl wurde die Funktion mit zwei Parametern deklariert – die Studenten konnten lange nicht verstehen, warum die Kompilierung fehlschlug.
Geschichte
Ein Entwickler verwendete Infix-Ausdrücke in einem großen arithmetischen Ausdruck ohne Klammern und glaubte, dass die Priorität der Operationen die gleiche sei wie bei traditionellen mathematischen Operatoren. Infolgedessen wurden die Ausdrücke nicht wie erwartet berechnet – es musste mit expliziten Klammern neu geschrieben werden.
Geschichte
Innerhalb einer Sammlung wurde das Pairing über Infix ("item to value") implementiert und innerhalb von Nesting verwendet, jedoch funktionierten aufgrund des Missverständnisses der Syntax zwei verschachtelte Infix-Aufrufe nicht – nur die Zuweisung des Paares auf oberster Ebene funktionierte, die verschachtelten Paare wurden ignoriert, was zu einem Verlust bedeutender Daten führte.