模式匹配的斯卡拉`class`
问题描述:
我试图实现unapply
为类,Foo
:模式匹配的斯卡拉`class`
object Foo {
def unapply(x: Int): Option[Int] = Some(x)
}
class Foo(x: Int)
然而,在REPL失败时,我尝试使用它:
scala> val f = new Foo(100)
scala> f match { case Foo(x) => x }
<console>:13: error: pattern type is incompatible with expected type;
found : Int
required: Foo
f match { case Foo(x) => x }
为什么我不能使用我为此示例创建的unapply
?
答
的unapply
的参数应该是要匹配的类型的实例:
class Foo(val x: Int)
object {
def unapply(f: Foo): Option[Int] = Some(f.x)
}
谢谢'M-z'。这是另一个[示例](http://*.com/a/20032429/409976)为您的解决方案的读者。 – 2014-11-24 03:54:55