Moosphan / Android-Daily-Interview

:pushpin:每工作日更新一道 Android 面试题,小聚成河,大聚成江,共勉之~

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

2019-08-23: Kotlin 中 infix 关键字的原理和使用场景?

Moosphan opened this issue · comments

infix可以自定义操作符,比如1 to 2 这种的, 1 add 2,让程序更加语义化

//其中to,dao就是中缀函数
fun infixFun() {
val train ="北京" to "上海"
val train ="北京" dao "上海"
}

是是扩展方法的一种特殊情况,如下是 to 的定义:

public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)

infix : 中缀函数,主要使用在只有一个参数的成员函数或者扩展函数上,同时比一般函数具有可读性;
使用条件:1、函数必须只有一个参数;2、函数必须是扩展函数或者成员函数;3、必须使用infix修饰;

用扩展函数举个例子:

infix fun Int.add(num:Int):Int{
return this + num
}

调用的时候:

val sum = 1 add 1

使用场景是用来修饰函数,使用了 infix 关键字的函数称为 中缀函数,使用时可以省略 点表达式和括号。让代码看起来更加优雅,更加语义化。

原理不过是编译器在语法层面给与了支持,编译为 Java 代码后可以看到就是普通的函数调用。

kotlin 的很多特性都是在语法和编译器上的优化。