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

Scala枚举中值和值之间的差异,scala,enumeration,Scala,Enumeration,我是斯卡拉的新手。请帮助我理解以下代码中的值和值之间的差异: 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 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)))

}
对象CardsEnum扩展枚举{
类型CardsEnum=Value
val spades=值(“♠")
瓦尔钻石=价值(“♦")
val=值(“♥")
val=价值(“♣")
def isRed(c:CardsEnum.Value)=c==红心| | c==钻石
}
对象NewCardsEnum扩展应用程序{
进口卡德森_
CardsEnum.foreach println的值

println(对于(e这只是一个类型别名:

type CardsEnum = Value
这不是强制性的,它只是让您始终使用
CardsEnum
作为一种类型:

import CardsEnum._

def func(e: CardsEnum) = ...
无需编写
CardsEnum.Value

def func(e: CardsEnum.Value) = ...
val spades = Value("♠")
此行声明一个名为
spades
的新变量,其结果是调用方法
Value

def func(e: CardsEnum.Value) = ...
val spades = Value("♠")
方法
值(“♠“”
创建名为
的新对象(“”♠”
并将其添加到枚举中。您作为参数提供的名称由
toString
方法使用

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

CardsEnum.values foreach println

有一个类型值、一个创建它们的方法值和一个收集它们的方法值。但是每个人都会说,作为一个新用户,不要费心对它们进行排序。有一个问题是为什么不使用Scala的旧枚举。