2017-09-25 4 views
0

Je suis juste curieux de savoir pourquoi mon compilateur Eclipse Drools (6.5.0) nécessite des points-virgules à la fin des déclarations dans la boucle, comme ci-dessous:Drools MVEL Dialect - Semi-Colon Exigence

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()); 
} 

Si je supprime les points-virgules de la première ou deuxième ligne de la boucle For, j'obtiens une erreur "jeton inattendu", mais pas si je l'enlève de la dernière ligne de la boucle. Est-il dû au fait que Drools évalue les lignes RHS comme une seule déclaration et qu'elles doivent donc être séparées à l'intérieur des boucles? Remarque: Je comprends que ce n'est pas une bonne pratique de coder en supposant que les points-virgules ne sont pas nécessaires, mais je suis tombé sur ce problème en expérimentant et je suis juste intéressé de connaître la raison de l'erreur du compilateur. Merci.

Répondre

0

Je suppose que la réponse est à cause de MVEL lui-même. Drools peut déléguer tout le bloc de code à MVEL pour évaluer et exécuter.

Selon M123, l'utilisation d'un point-virgule n'est pas obligatoire dans les cas où vous avez 1 instruction ou dans la dernière instruction d'un script.

Hope it helps,

+0

Merci, et oui on dirait qu'il traite « si », « pour », etc contenu comme une seule ligne, donc si des points-virgules ne sont pas ajoutées à la fin des lignes elle est traitée en une seule déclaration. Il est préférable d'ajouter des points-virgules sur toutes les lignes que je considère comme sûres. – Neil