Scala:无法解决模式匹配中案例类的方法错误

时间:2017-02-24 13:29:32

标签: scala

我尝试再次重新实现scala中的Some和None用于学习目的。我在scala工作区中执行以下所有代码。

case class Some[+A](get: A) extends Option[A]
case object None extends Option[Nothing]

trait Option[+A] {
  def map[B](f: A => B): Option[B] = this match {
    case None => None
    case Some(a) => Some(f(a))   // error here
  }
}

我遇到以下错误:

  

无法解析方法名称unapply

我不明白这一点。因为此错误通常仅在正常类中发生。请告诉我为什么遇到这个错误。

1 个答案:

答案 0 :(得分:4)

我猜解释器只是混淆了,因为它在场景后面导入了以下内容:

  • scala._
  • java.lang._
  • scala.Predef._

其中包括Option类及其子类型 - SomeNone。我刚刚重新命名了你的课程,一切正常:

trait Optional[+A] {
  def map[B](f: A => B): Optional[B] = this match {
    case Absent => Absent
    case Present(a) => Present(f(a))
  }
}
case class Present[+A](get: A) extends Optional[A]
case object Absent extends Optional[Nothing]

Present(3).map(_ * 2) // Present(6)