2017-09-25 12 views
0

세미 콜론 :Drools가 MVEL 방언 - 내 이클립스 Drools가 컴파일러 (6.5.0)는 다음과 같이 For 루프에서 문장의 끝에 세미콜론이 필요 이유에 불과 궁금 요구 사항

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 루프의 첫 번째 또는 두 번째 줄에서 세미콜론을 제거하면 "예기치 않은 토큰"오류가 발생하지만 루프의 마지막 줄에서 제거됩니다.

RHS 줄을 단일 문으로 평가하기 때문에 Drools가 모든 루프 내에서 분리되어야합니까?

참고 : 필자는 세미콜론이 필요하지 않다고 가정하고 코드를 작성하는 것이 좋지 않다고 생각하지만 실험 중에이 문제를 발견했으며 컴파일러 오류 이유를 알고 싶어했습니다. 감사.

답변

0

대답은 MVEL 자체 때문입니다. Drools는 코드 전체를 MVEL에 위임하여 평가하고 실행할 수 있습니다.

this guide에 따르면 MVEL에서는 문장이 1 개인 경우 또는 스크립트의 마지막 문장에 세미콜론을 사용하지 않아도됩니다.

, 그것은 도움이

+0

감사를 희망하고, "만일"는 취급 같은 세미콜론은 줄의 끝에 추가되어 있지 않은 경우는 치료 그래서 예는 등 한 줄과 같은 내용 "를"보인다 하나의 성명서로 안전을 기하기 위해 모든 라인에 세미콜론을 추가하는 것이 가장 좋습니다. – Neil