[ https://issues.apache.org/jira/browse/JEXL-440?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17993115#comment-17993115 ]
Xu Pengcheng commented on JEXL-440: ----------------------------------- +1 for this feature, thanks! > Switch statement & expressions > ------------------------------ > > Key: JEXL-440 > URL: https://issues.apache.org/jira/browse/JEXL-440 > Project: Commons JEXL > Issue Type: New Feature > Affects Versions: 3.5.0 > Reporter: Henri Biestro > Assignee: Henri Biestro > Priority: Major > Fix For: Later > > > *Switch / case / default Java-like behavior; statement and expression* > Switch as a +statement+ rule: > * case values must be constant (null and NaN are allowed though) > * return is allowed > * no default clause is never an issue. > Switch as +expression+ rules: > * case values must be constant (null and NaN are allowed though) > * return is not allowed > * No strong typing means JEXL can not verify completeness of case matching at > parsing time; a lack of default clause triggers a runtime exception if no > case matched. > The differences between statement & expressions in a nutshell: > Statement: > {code:java} > switch (s) { > case 1: { > // some code > break; > } > case 2: > // more code, follow through to 3 > case 3: > return 5; // return is allowed > } > {code} > Expression: > {code:java} > let v = switch (s) { > case 1 -> 10; > case 2, 3 -> 20; > case 4 -> { 30 + 10 } // jexl is functional, last eval is expression value, > no yield needed > default -> null // if not present and no case match, error > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)