OCLOperators whentrue
Hans Karlsen (talk | contribs) (Created page with "When having immutable ocl expression you always return a value - and the the OCLOperators_TrueFalse is good, but when using the MDriven Action-Language that allows updates of...") |
(Automatically adding template at the end of the page.) |
||
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
When | When you have an immutable OCLexpression, you always return a value - and then the [[OCLOperators casetruefalse|OCLOperators_caseTrueFalse]] is good - but when using the MDriven Action-Language that allows updates of objects, another construct is introduced to compact things even more: | ||
boolean. | boolean.whentrue(dothis):boolean | ||
The return is always the arg0 | |||
'''Example:''' | |||
let x=SomeObject.SomeEnum in ( | |||
(x=#Enum1).whentrue(SomeObject.DoYourThing1); | |||
(x=#Enum2).whentrue(SomeObject.DoYourThing2); | |||
(x=#Enum3).whentrue(SomeObject.DoYourThing3) | |||
) | |||
'''''Fun fact:''''' "whentrue" and logical "and" are implemented the same - the logical "and" only evaluates arg1 of arg0 is true (lazy evaluation) and "whentrue" does the same thing, but always returns arg0. | |||
This means that a convoluted but equivalent construct can be: | |||
let x=SomeObject.SomeEnum in ( | |||
(x=#Enum1) and (SomeObject.DoYourThing1;true); | |||
(x=#Enum2) and (SomeObject.DoYourThing2;true); | |||
(x=#Enum3) and (SomeObject.DoYourThing3;true) | |||
) | |||
[[Category:OCLOperators]] | |||
{{Edited|July|12|2024}} |
Latest revision as of 15:43, 10 February 2024
When you have an immutable OCLexpression, you always return a value - and then the OCLOperators_caseTrueFalse is good - but when using the MDriven Action-Language that allows updates of objects, another construct is introduced to compact things even more:
boolean.whentrue(dothis):boolean
The return is always the arg0
Example:
let x=SomeObject.SomeEnum in ( (x=#Enum1).whentrue(SomeObject.DoYourThing1); (x=#Enum2).whentrue(SomeObject.DoYourThing2); (x=#Enum3).whentrue(SomeObject.DoYourThing3) )
Fun fact: "whentrue" and logical "and" are implemented the same - the logical "and" only evaluates arg1 of arg0 is true (lazy evaluation) and "whentrue" does the same thing, but always returns arg0.
This means that a convoluted but equivalent construct can be:
let x=SomeObject.SomeEnum in ( (x=#Enum1) and (SomeObject.DoYourThing1;true); (x=#Enum2) and (SomeObject.DoYourThing2;true); (x=#Enum3) and (SomeObject.DoYourThing3;true) )
This page was edited more than 11 months ago on 02/10/2024. What links here