0

次のコードスニペットがどのように機能するかを正確に理解しようとしています。特に2Seq(JsString(bar), _*)行目と3行目ではmust_、構文がわかりにくいです。

val foo = (Json.parse(contentAsString(result)    
val Seq(JsString(bar), _*) = (foo \\ "bar")
bar must_== "crazy"
4

1 に答える 1

7

2行目はパターンマッチですが、val構文を使用しています。 foo \\ "bar"を返しますSeq。これは一致させることができます。

Seq(JsString(bar), _*)

つまり、アイテムはaSeqと一致する必要があり、最初のアイテムは、JsStringそのコンテンツを呼び出すaである必要がありbar、残りは気にしません(_*)。通常、次のように表示されます。

(foo \\ "bar") match {
  case Seq(JsString(bar), _*) =>  // do something with bar
  ...
}

valしかし、この方法でもsを初期化できることがわかりました。

また、must_==一部のテストフレームワークのメソッド名(メソッドは英数字の後にアンダースコアの後に記号を付けることができます)です。どちらか忘れました。しかし、ほぼ確実に、メソッドが何であれ、テストされたもの、テストされたものへの暗黙の変換がありmust_==ます。

于 2012-07-03T04:39:31.550 に答える