电梯有Box http://liftweb.net/api/26/api/index.html#net.liftweb.common.Box案例类。
我编写了以下方法来进行模式匹配Box[A]
:
scala> import net.liftweb.common._
import net.liftweb.common._
scala> def foo[A](box: Box[A]) = box match {
| case Empty | Failure(_, _, _) => true
| case Full(_) => false
| }
foo: [A](box: net.liftweb.common.Box[A])Boolean
我写这个方法是为了了解是否ParamFailure
,这是一个子类Failure
,将进行模式匹配Failure(_, _, _)
case.
scala> val pf: Box[String] = ParamFailure("a", Empty, Empty, "blah")
pf: net.liftweb.common.Box[String] = ParamFailure(a, Empty, Empty, blah)
而且,确实如此。
scala> foo(pf)
res9: Boolean = true
我不清楚为什么ParamFailure
将匹配到Failure(_, _, _)
。这是为什么?