为什么我不能进行模式匹配:
class Gender extends Enumeration {
val male, female, unknown = Value
}
object MyObj {
def getGender(str: String) = str match {
case "1" => Gender.male
case "2" => Gender.female
case _ => Gender.unknown
}
}
错误not found: value Gender
答案 0 :(得分:4)
Gender.male
要求Gender
为值。如果Gender
来自Java,则male
可以是类的静态成员,或者是java枚举的元素。但是,在Scala上,如果XXX.yyy
是一个类,XXX
永远不会是值。
也许您应该将Gender
定义为object
而不是class
。
答案 1 :(得分:3)
这个问题与模式匹配无关。
您的代码段的精简版:
class Foo {
val bar = 1
}
Foo.bar
给出错误:
error: not found: value Foo
因为Foo
是一种类型,而不是一种价值。