首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >scala中花括号和括号的真正区别

scala中花括号和括号的真正区别
EN

Stack Overflow用户
提问于 2015-04-26 14:18:30
回答 1查看 266关注 0票数 3

在使用Scala一段时间后,到处阅读,特别是here

我确定我知道什么时候该用卷发。作为经验法则,如果我想传递要执行的代码块,我将使用大括号。

如何使用使用花括号的elastic4s DSL出现这个令人讨厌的错误:

代码语言:javascript
运行
复制
bool {
  should {
    matchQuery("title", title)
  }
  must {
    termQuery("tags", category)
  }
}

汇编成:

代码语言:javascript
运行
复制
{
  "bool" : {
    "must" : {
      "term" : {
        "tags" : "tech"
      }
    }
  }
}

在使用括号时:

代码语言:javascript
运行
复制
bool {
       should (
         matchQuery("title", title)
        ) must (
         termQuery("tags", category)
        )
      }

给出正确的结果:

代码语言:javascript
运行
复制
{
  "bool" : {
    "must" : {
      "term" : {
        "tags" : "tech"
      }
    },
    "should" : {
      "match" : {
        "title" : {
          "query" : "fake",
          "type" : "boolean"
        }
      }
    }
  }
}

这是使用Scala2.11.6编译的--更令人困惑的是,在intellij调试器中计算表达式会给出正确的结果,无论我使用什么。

我只注意到最后一个表达式正在被评估,为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-26 14:33:17

可能不是大括号的问题,而是内插法的问题。看线

代码语言:javascript
运行
复制
  should {
    matchQuery("title", title)
  }
  must {

must进入下一行,因此它被解释为新表达式,而不是should的延续。你可能必须把它放在同一条线上的关闭支撑。

代码语言:javascript
运行
复制
  should {
    matchQuery("title", title)
  } must {
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29878783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档