0

我只是想不出用谷歌搜索的方法。例如,我有这样的代码:

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 中获取原始对象,是否可以通过某种方式编写此代码以使其正常工作?

4

1 回答 1

3

对不起,我是个彻头彻尾的白痴。即使在编写了我的 haskell 解决方案之后,我什至没有想过要尝试这个:

case sc@StatusCode(301) => sc.getMessage
于 2012-11-02T23:36:13.850 回答