【发布时间】:2014-10-07 20:36:46
【问题描述】:
在一个 scala 程序中,我创建了一个匹配用户的案例,遵循来自 http://danielwestheide.com/blog/2012/11/21/the-neophytes-guide-to-scala-part-1-extractors.html
的一些 sn-ps特别是,我声明了一个扩展另一个类的类,然后我尝试对该类进行大小写匹配。
user match {
case FreeUser(name) => "Hello " + name;
case PremiumUser(name) => "hello " + name;
}
这些操作都失败了:好像 case 子句没有看到 FreeUser 和 PremiumUser 类的类定义,它们就在它上面。
class FreeUser(val name: String) extends User{
def unapply(user: FreeUser):Option[String] = Some(user.name);
}
//takes the object as input, returns the parameter used to construct it.
class PremiumUser(val name: String) extends User {
def unapply(user: PremiumUser):Option[String]= Some(user.name);
}
val name = "ASDF"
val user: User = new PremiumUser("jay");
user match {
/** This statement fails to comiple : not found, value FreeUser. **/
case FreeUser(name) => "Hello " + name;
case PremiumUser(name) => "hello " + name;
}
对于完整的课程,您可以参考这个要点。 https://gist.github.com/anonymous/e96107f91ef0262f3268
因此,我的问题是如何在 Scala 的 case 子句中引用内部类。
【问题讨论】:
标签: scala inner-classes