Funkcja infix to funkcja, którą można wywoływać w formie infix (bez kropki i nawiasów), co zwiększa czytelność kodu. Takie funkcje są wygodne, na przykład, do tworzenia DSL (języków specyficznych dla dziedzin).
infix.Przykład:
infix fun Int.add(x: Int): Int = this + x val result = 5 add 10 // 15
Czy można używać funkcji infix z wieloma parametrami lub z parametrami domyślnymi?
Odpowiedź: Nie, nie można. Funkcja infix może mieć dokładnie jeden obowiązkowy parametr bez wartości domyślnej i bez vararg.
Przykład błędnej deklaracji:
// Błąd! infix fun foo(a: Int, b: Int) { }
Historia
W projekcie próbowano wdrożyć funkcję infix, aby zastąpić wywołania funkcji budujących bardziej czytelnymi wyrażeniami infix. Z powodu braku wiedzy na temat ograniczeń dotyczących liczby parametrów funkcję zadeklarowano z dwoma parametrami — studenci długo nie mogli zrozumieć, dlaczego kompilacja się nie udaje.
Historia
Programista użył wyrażeń infix w dużym wyrażeniu arytmetycznym bez nawiasów, sądząc, że priorytet operacji jest taki sam jak w tradycyjnych operatorach matematycznych. W rezultacie wyrażenia obliczały się w sposób niezgodny z oczekiwaniami — trzeba było przepisać z wyraźnymi nawiasami.
Historia
Wewnątrz kolekcji zrealizowano parowanie za pomocą infix ("item to value") i stosowano zagnieżdżenie, jednak z powodu niedop理解anienia składni dwa zagnieżdżone wywołania infix nie zadziałały — zadziałało tylko przypisanie pary na najwyższym poziomie, zagnieżdżone pary zostały zignorowane, co doprowadziło do utraty istotnych danych.