Scala Liftweb - 模式类型与预期类型不兼容

时间:2012-11-07 13:12:09

标签: scala lift

我正在尝试使用以下功能检查某个网页是否已启动:

import net.liftweb.common.{Failure, Empty, Full, Box}               // 1
                                                                    // 2
def isAlive = {                                                     // 3
    httpClient.getAsString("http://www.google.com", Nil) match {    // 4
       case f : Full[String] => true                                // 5
       case f : Failure => false                                    // 6
       case Empty => false                                          // 7
    }                                                               // 8
}                                                                   // 9

函数getAsString返回类型为net.liftweb.common.Box[String]

该功能工作正常但我的问题是当我用这一行替换第6行时:

       case Failure => false                                        // 6

我收到了错误:

error: pattern type is incompatible with expected type;
found   : object net.liftweb.common.Failure
required: net.liftweb.common.Box[String]
case Failure => false

(第5行也是如此)

为什么会这样?为什么我必须使用变量进行匹配,而不能仅根据类型进行匹配?

1 个答案:

答案 0 :(得分:6)

你不能像基于类型那样匹配,如果你使用Failure作为模式你必须在构造函数上匹配:

case Failure(_, _, _) => false