Kotlin 中缀函数(infix)

在本文中,您将学习使用 infix 符号在Kotlin中调用函数(借助示例)。

在学习如何创建具有中缀符号的函数之前,让我们先研究两个常用的中缀函数。

使用 || 和 &&& 操作时,编译器分别查找 or 和 and 函数,并在后台调用它们。

这两个函数支持中缀表示法。

示例:Kotlin or & and 函数

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")
}

运行该程序时,输出为:

result = true
result = false

在上面的程序中,使用a or b 代替 a.or(b),并使用 a and b 代替 a.and(b)。 这是允许的,因为这两个函数支持中缀表示法。

如何创建带有中缀符号的函数?

您可以使用中缀表示法在Kotlin中进行函数调用,如果函数

  • 成员函数(或扩展函数

  • 只有一个参数。

  • 标有 infix 关键字。

示例:用户定义的函数,带中缀表示法

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)
}

运行该程序时,输出为:

      * 
    * * * 
  * * * * * 
* * * * * * *

在这里,createPyramid()是创建金字塔结构的infix函数。 它是Structure类的成员函数,仅接受一个Int类型的参数,并以关键字infix开头。

金字塔的行数取决于传递给函数的参数。