我是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)))
}
答案 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