kotlin中缀函数的使用

深入学习Kotlin基础知识
2022-07-07 14:23 · 阅读时长3分钟
小课

中缀函数是kotlin中的一个特性,Java中没有,所以对于Java开发者来说比较生疏,其实它和普通函数一样,只是多了一种调用形式和一些额外的限制。

申明中缀函数很简单,只需要使用infix关键字来修饰函数即可,中缀函数由于它调用的特殊性,所以它比普通函数多了一些限制。

  • 它们必须是成员函数或扩展函数;
  • 它们必须只有一个参数;
  • 其参数不得接受可变数量的参数且不能有默认值。

在平时开发中常用到中缀函数有and、or、xor、until、shl、shr等等。中缀函数比普通函数多了一种调用形式,常规的调用方式还是可以用,比如

加载中...

下面看一个中缀函数的使用示例,假设我们使用下面的模型来定义扑克牌,定义两个枚举类型Kind和Number,分别代表花色和数字,Card类表示牌。

加载中...

比如说获取一个红桃Q实例,可以这样申明 val card = Card(Number.QUEEN, Kind.HEARTS),如果我们为Number类定义个普通方法。

加载中...

那么这样Number.QUEEN.of(Kind.HEARTS)就可以获取一个红桃Q的实例,如果把of方法定义为中缀函数。

加载中...

那么这样Number.QUEEN of Kind.HEARTS就可以获取一个红桃Q的实例,其实和普通函数一样,只是多了一种调用形式,不过这种调用形式在某些场景下会显得更加自然。

kotlin中缀函数infix