Scala枚举中值与值之间的差异

时间:2017-02-08 22:35:42

标签: scala enumeration

我是Scala的新手。请帮助我理解以下代码中值和值之间的区别:

 object CardsEnum extends Enumeration{

type CardsEnum = Value
val spades = Value("♠")
val diamonds = Value("♦")
val hearts = Value("♥")
val clubs = Value("♣")
def isRed(c:CardsEnum.Value) = c==hearts || c==diamonds
}

object NewCardsEnum extends App{
import CardsEnum._

CardsEnum.values foreach println

println(for (e <- CardsEnum.values) yield (e,isRed(e)))

}

1 个答案:

答案 0 :(得分:3)

这只是一个类型别名:

type CardsEnum = Value

这不是强制性的,您只需使用CardsEnum作为类型:

import CardsEnum._

def func(e: CardsEnum) = ...

而不必写CardsEnum.Value

def func(e: CardsEnum.Value) = ...

此行声明一个名为spades的新变量,其结果是调用方法Value

val spades = Value("♠")

方法Value("♠")创建一个名为("♠")的新对象,并将其添加到枚举中。您作为参数提供的名称由toString方法使用。

添加到枚举中的所有值都在.values集合中,这意味着这将打印♠ ♦ ♥ ♣

CardsEnum.values foreach println