在本文中,您將學(xué)習(xí)使用 infix 符號在Kotlin中調(diào)用函數(shù)(借助示例)。
在學(xué)習(xí)如何創(chuàng)建具有中綴符號的函數(shù)之前,讓我們先研究兩個常用的中綴函數(shù)。
使用 || 和 &&& 操作時,編譯器分別查找 or 和 and 函數(shù),并在后臺調(diào)用它們。
這兩個函數(shù)支持中綴表示法。
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") }
運(yùn)行該程序時,輸出為:
result = true result = false
在上面的程序中,使用a or b 代替 a.or(b),并使用 a and b 代替 a.and(b)。 這是允許的,因為這兩個函數(shù)支持中綴表示法。
您可以使用中綴表示法在Kotlin中進(jìn)行函數(shù)調(diào)用,如果函數(shù)
是成員函數(shù)(或擴(kuò)展函數(shù))。
只有一個參數(shù)。
標(biāo)有 infix 關(guān)鍵字。
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) }
運(yùn)行該程序時,輸出為:
* * * * * * * * * * * * * * * *
在這里,createPyramid()是創(chuàng)建金字塔結(jié)構(gòu)的infix函數(shù)。 它是Structure類的成員函數(shù),僅接受一個Int類型的參數(shù),并以關(guān)鍵字infix開頭。
金字塔的行數(shù)取決于傳遞給函數(shù)的參數(shù)。