Kotlin中的infix


infix

“中缀表示法”,比如 1 + 2表示操作符以中缀的形式处于操作数的中间.(对应的也有前缀表达式,后缀表达式)

在kotlin中有这样的几种调用:

   val map = mapOf<String,Int>(
           "a" to 1,
           "b" to 2
   )

   val b = map.isEmpty() or (map.size == 1)

   val c = 1 shl 2

上面的to,or,shl都是用infix修饰的函数,比如to:

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

infix函数必须满足下面条件:

  • 必须是成员函数或者拓展函数
  • 必须只有一个参数
  • 其参数不得接受可变数量的参数,并且不能有默认值

还有一点需要注意的就是: infix调用 优先级 低于算数操作符/类型转换/rangeTo操作符等,但是其优先级高于&& ,||,is , in等操作符,因此使用infix的时候最好按照意图在适当的地方加上括号,避免混乱


文章作者: 姜康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜康 !
评论
 上一篇
Kotlin中的inline Kotlin中的inline
inline/noinline/crossinline/reified内联,这个概念无需多说. kotlin中使用高阶函数在运行时会有一些性能损失:每一个函数都是一个对象,并且都会捕获一个闭包(哪些在函数体内可以访问到的变量),对函数对象和
2020-10-14
下一篇 
深入浅出Android中的事件分发机制 深入浅出Android中的事件分发机制
从输入硬件到Android窗口这里直接从底层硬件分析到事件传递到View的流程,具体的调用链查看源码,这里是基于Android 10 的源码分析的. 主要流程如下: 输入设备产生信号,比如手触摸屏幕,触摸屏产生电流或者电压信号,传递给设
2020-10-13
  目录