重建模式匹配,以便我可以调用它的方法?

时间:2012-11-02 23:33:52

标签: scala

我只是想办法谷歌这个。例如,我有这样的代码:

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中获取原始对象,是否有某种方法可以编写此代码以便它可以工作?

1 个答案:

答案 0 :(得分:3)

对不起,我是个白痴。在编写我的haskell解决方案之后,我甚至都没想过要尝试这个:

case sc@StatusCode(301) => sc.getMessage