我正在尝试使用以下功能检查某个网页是否已启动:
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行也是如此)
为什么会这样?为什么我必须使用变量进行匹配,而不能仅根据类型进行匹配?
答案 0 :(得分:6)
你不能像基于类型那样匹配,如果你使用Failure作为模式你必须在构造函数上匹配:
case Failure(_, _, _) => false