假設(shè)你有一副撲克牌,你是這樣定義的
//花形
enum class Suit {
HEARTS,
SPADES,
CLUBS,
DIAMONDS
}
//數(shù)字
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)
如果你想把兩個(gè)屬性鏈接起來:
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