在模式匹配中找不到

时间:2013-10-18 02:48:59

标签: scala

为什么我不能进行模式匹配:

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

2 个答案:

答案 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是一种类型,而不是一种价值。