我只是想不出用谷歌搜索的方法。例如,我有这样的代码:
import dispatch._
object Main extends App {
val svc = url("http://www.php.net/license")
val src:Promise[String] = Http(svc OK as.String) recover {
case StatusCode(301) => "got the 301, now where the heck should I go?"
case error => "caught error:" + error.toString
}
println(src())
}
从调度包中,recover 需要一个 PartialFunction[Throwable,A] ,在我的例子中,A 最终是一个字符串。该 url 总是返回 301,大概是一条消息告诉我应该去哪里。但是在它的模式匹配中,我如何访问状态码继承的大量方法,这些方法可以让我知道出了什么问题?
在haskell我会这样做:
case x of
sc@StatusCode(301) -> getMessage(sc)
error -> ...
如果无法在 scala 中获取原始对象,是否可以通过某种方式编写此代码以使其正常工作?