Kotlin Infix函数的使用方法

假设你有一副扑克牌,你是这样定义的

//花形
enum class Suit {
  HEARTS,
  SPADES,
  CLUBS,
  DIAMONDS
}

//数字
enum class Rank {
  TWO, THREE, FOUR, FIVE,
  SIX, SEVEN, EIGHT, NINE,
  TEN, JACK, QUEEN, KING, ACE 
}
data class Card(val rank: Rank, val suit: Suit)

你可以这样生成一张牌:

val card = Card(Rank.QUEEN, Suit.HEARTS)

如果你想把两个属性链接起来:

enum class Rank {
  TWO, THREE, FOUR, FIVE,
  SIX, SEVEN, EIGHT, NINE,
  TEN, JACK, QUEEN, KING, ACE;
  fun of(suit: Suit) = Card(this, suit)
}

你可以这样生成一张牌:

val card = Rank.QUEEN.of(Suit.HEARTS)

但是,如果你用了infix的话:

enum class Rank {
  TWO, THREE, FOUR, FIVE,
  SIX, SEVEN, EIGHT, NINE,
  TEN, JACK, QUEEN, KING, ACE;
 
  infix fun of(suit: Suit) = Card(this, suit)
}

你可以这样生成一张牌:

val card = QUEEN of HEARTS

代码出自:
https://medium.com/makingtuenti/infix-functions-in-kotlin-2db3d3142dd2

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容