我试图准确理解以下代码片段的工作原理,特别是第 2Seq(JsString(bar), _*)
行和第 3 行must_
,语法让我感到困惑
val foo = (Json.parse(contentAsString(result)
val Seq(JsString(bar), _*) = (foo \\ "bar")
bar must_== "crazy"
我试图准确理解以下代码片段的工作原理,特别是第 2Seq(JsString(bar), _*)
行和第 3 行must_
,语法让我感到困惑
val foo = (Json.parse(contentAsString(result)
val Seq(JsString(bar), _*) = (foo \\ "bar")
bar must_== "crazy"
第 2 行是模式匹配,但使用val
语法。 foo \\ "bar"
返回 a Seq
,您可以匹配它;
Seq(JsString(bar), _*)
表示该项必须与 a 匹配,Seq
并且第一项必须是JsString
我们将调用其内容的 a bar
,而我们不关心其余的 ( _*
)。通常你会看到这样的:
(foo \\ "bar") match {
case Seq(JsString(bar), _*) => // do something with bar
...
}
但事实证明,您也可以val
通过这种方式初始化 s。
此外,must_==
是某些测试框架的方法名称(方法可以是字母数字后跟下划线后跟符号)。我忘了哪个。但几乎可以肯定的是,存在从任何东西到经过测试的任何东西的隐式转换,以及经过测试的任何东西有must_==
方法。