infix 函数是 Kotlin 提供的一种高级语法糖特性,具体的使用方法如下:
if("Hello Kotlin".startsWith("Hello")) {// ...}infix fun String.beginsWith(prefix: String) = startsWith(prefix)// 使用时if("Hello Kotlin" beginsWith "Hello") {// ...}
可以看到,我们定义了一个 String 类的扩展函数 beginsWith() 并在前面加上了 infix 关键字。然后我们在使用时就可以直接在字符串后面调用 beginsWith() 方法,但不需要将参数传递到括号中。这增加了可读性。
从上面的例子我们可以看出, infix 函数的语法规则并不复杂, infix 函数允许我们将函数调用时的点、括号等固有语法去掉,从而实现一种近似自然语言般的语法表达。
但是, infix 函数也有两个比较严格的限制:首先, infix 函数是不能定义成顶层函数的,它必须是某个类的成员函数,可以使用扩展函数的方式将它定义到某个类中;其次, infix 函数必须接收且只能接收一个参数,但参数类型没限制。
