scala中大括号和圆括号的真正区别
Real difference between curly braces and parenthesis in scala
在使用 Scala 一段时间并到处阅读之后,尤其是 here
我确信我知道什么时候使用卷曲。根据经验,如果我想传递要执行的代码块,我将使用大括号。
这个讨厌的错误是如何使用 elastic4s DSL 浮出水面的
使用花括号:
bool {
should {
matchQuery("title", title)
}
must {
termQuery("tags", category)
}
}
编译为:
{
"bool" : {
"must" : {
"term" : {
"tags" : "tech"
}
}
}
}
使用括号时:
bool {
should (
matchQuery("title", title)
) must (
termQuery("tags", category)
)
}
给出正确的结果:
{
"bool" : {
"must" : {
"term" : {
"tags" : "tech"
}
},
"should" : {
"match" : {
"title" : {
"query" : "fake",
"type" : "boolean"
}
}
}
}
}
这是使用 scala 2.11.6 编译的——更令人困惑的是,无论我使用什么,在 intellij 调试器中评估表达式都会给出正确的结果。
我注意到只计算了最后一个表达式,这是为什么?
问题可能不在大括号中,而在中缀表示法中。看行
should {
matchQuery("title", title)
}
must {
must
进入下一行,因此它被解释为新表达式而不是 should
的延续。您可能必须将它与右大括号
放在同一行
should {
matchQuery("title", title)
} must {
在使用 Scala 一段时间并到处阅读之后,尤其是 here
我确信我知道什么时候使用卷曲。根据经验,如果我想传递要执行的代码块,我将使用大括号。
这个讨厌的错误是如何使用 elastic4s DSL 浮出水面的 使用花括号:
bool {
should {
matchQuery("title", title)
}
must {
termQuery("tags", category)
}
}
编译为:
{
"bool" : {
"must" : {
"term" : {
"tags" : "tech"
}
}
}
}
使用括号时:
bool {
should (
matchQuery("title", title)
) must (
termQuery("tags", category)
)
}
给出正确的结果:
{
"bool" : {
"must" : {
"term" : {
"tags" : "tech"
}
},
"should" : {
"match" : {
"title" : {
"query" : "fake",
"type" : "boolean"
}
}
}
}
}
这是使用 scala 2.11.6 编译的——更令人困惑的是,无论我使用什么,在 intellij 调试器中评估表达式都会给出正确的结果。
我注意到只计算了最后一个表达式,这是为什么?
问题可能不在大括号中,而在中缀表示法中。看行
should {
matchQuery("title", title)
}
must {
must
进入下一行,因此它被解释为新表达式而不是 should
的延续。您可能必须将它与右大括号
should {
matchQuery("title", title)
} must {