Infix fonksiyonu - noktaları ve parantezleri kullanmadan infix biçiminde çağrılabilen bir fonksiyondur, bu da kodun okunabilirliğini artırır. Bu tür fonksiyonlar, özellikle DSL (alan spesifik diller) oluşturmak için kullanışlıdır.
infix belirteci ile ilan edilmelidir.Örnek:
infix fun Int.add(x: Int): Int = this + x val result = 5 add 10 // 15
Birden fazla parametre veya varsayılan parametre ile infix fonksiyonu kullanılabilir mi?
Cevap: Hayır, kullanılamaz. Infix fonksiyonu, varsayılan değeri olmayan ve vararg olmayan tam olarak bir zorunlu parametreye sahip olabilir.
Yanlış tanımın örneği:
// Hata! infix fun foo(a: Int, b: Int) { }
Hikaye
Proje, builder fonksiyonlarını daha okunabilir infix ifadeleriyle değiştirmek için bir infix fonksiyonu entegre etmeye çalıştı. Parametre sayısı üzerindeki kısıtlamaları bilmedikleri için fonksiyonu iki parametre ile ilan ettiler - öğrenciler, derlemenin neden geçmediğini anlamakta zorlandılar.
Hikaye
Geliştirici, büyük bir aritmetik ifadede parantezsiz infix ifadeleri kullandı ve işlemlerinin önceliğinin geleneksel matematiksel operatörlerinkiyle aynı olduğunu düşündü. Sonuç olarak, ifadeler beklenildiği gibi hesaplanmadı - açık parantezlerle yeniden yazmak zorunda kaldılar.
Hikaye
Bir koleksiyonda paring'i infix ile uyguladılar ("item to value") ve içeride nesting uyguladılar, ancak sözdizimini anlamadıkları için iki iç içe infix çağrısı çalışmadı - yalnızca üst seviyede bir çift ataması işlendi, iç içe çiftler görmezden gelindi ve önemli veri kaybına yol açtı.