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 は String になります。その URL は常に 301 を返します。おそらく、代わりにどこに行けばよいかを示すメッセージが表示されます。しかし、そのパターン マッチングでは、statuscode によって継承された多数のメソッドにアクセスして、何が問題なのかを知るにはどうすればよいでしょうか?

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 に答える