首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Drools MVEL方言-分号要求

Drools MVEL方言-分号要求
EN

Stack Overflow用户
提问于 2017-09-25 19:15:27
回答 1查看 330关注 0票数 1

我只是好奇为什么我的Eclipse Drools编译器(6.5.0)在For循环中的语句末尾需要分号,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
Map businessRulesRequest = $root.containsKey("BusinessRulesRequest") ? $root.get("BusinessRulesRequest") : null
Map quoteRequest = businessRulesRequest!=null && businessRulesRequest.containsKey("QuoteRequest") ? businessRulesRequest.get("QuoteRequest") : null
List resultsByKey = quoteRequest!=null && quoteRequest.containsKey("resultsByKey") ? quoteRequest.get("resultsByKey") : new ArrayList()

for (Map search : resultsByKey) {
    Map searchInfo = (search.containsKey("searchInfo") ? search.get("searchInfo") : null);
    String searchName = searchInfo!=null && searchInfo.containsKey("searchName") ? searchInfo.get("searchName").toString() : "";
    List results = (searchName=="quotesMotor" && search.containsKey("results") ? search.get("results") : new ArrayList());
}

如果我从For循环中的第一行或第二行中删除分号,我会得到一个“意外的token”错误,但如果我从循环中的最后一行中删除它,就不会出现这种错误。

是不是因为Drools将RHS行作为一条语句进行计算,所以它们必须在任何循环中分开?

注意:我知道假设不需要分号并不是编写代码的最佳实践,但是我在实验时遇到了这个问题,我只是想知道编译器错误的原因。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-09-25 21:33:19

我想答案是因为MVEL本身。Drools可能会将整个代码块委托给MVEL进行评估和执行。

根据this guide的说法,在MVEL中,如果你有一条语句,或者在脚本的最后一条语句中,分号的使用不是强制性的。

希望能有所帮助,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46403885

复制
相关文章

相似问题

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