1

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

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

4

2 回答 2

4

Gender.male要求这Gender是一个值。如果Gender来自 Java,则male可以是类的静态成员,或者是 Java 枚举的元素。然而,在 Scala 上,如果是类,XXX.yyy则永远不会是值。XXX

也许您应该定义Gender为 aobject而不是 a class

于 2013-10-18T02:59:54.577 回答
3

这个问题与模式匹配无关。

您的片段的精简版本:

class Foo { 
    val bar = 1
}

Foo.bar

给出错误:

error: not found: value Foo

因为Foo是类型,而不是值。

于 2013-10-18T03:05:22.410 回答