我只是想办法谷歌这个。例如,我有这样的代码:
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在我的情况下最终成为String。那个网址总是返回301,大概有一条消息告诉我应该去哪里。但是在模式匹配上,我如何访问由状态代码继承的大量方法,这些方法可以让我知道出了什么问题?
在haskell我会这样做:
case x of
sc@StatusCode(301) -> getMessage(sc)
error -> ...
如果无法在scala中获取原始对象,是否有某种方法可以编写此代码以便它可以工作?
答案 0 :(得分:3)
对不起,我是个白痴。在编写我的haskell解决方案之后,我甚至都没想过要尝试这个:
case sc@StatusCode(301) => sc.getMessage