OCLOperators casetruefalse
No edit summary
No edit summary
Line 7: Line 7:
This operator enables you to write the same thing as
This operator enables you to write the same thing as
  somebool.casetruefalse(someexpressionwithtypeX,someOtherexpressionwithtypeX)
  somebool.casetruefalse(someexpressionwithtypeX,someOtherexpressionwithtypeX)
===== Using in EAL =====
If you want to execute methods in a case/switch -like statement.
This makes a switch like construct look like this:
This makes a switch like construct look like this:
  let x=SomeObject.SomeEnum in
  let x=SomeObject.SomeEnum in
Line 14: Line 18:
    (x=#Enum3).casetruefalse(SomeObject.DoYourThing3,DoNothing)
    (x=#Enum3).casetruefalse(SomeObject.DoYourThing3,DoNothing)
  )
  )
===== Using in OCL =====
If you want to derive a string based on a list of conditions and have an else -statement if none of the expressions where True
self.oclIsInState(#New).caseTrueFalse('New/Ordering', String.nullValue)+
self.oclIsInState(#Waiting).caseTrueFalse('Waiting', String.nullValue)+
self.oclIsInState(#Ordered).caseTrueFalse('Ordered', String.nullValue)->
collect(s| s.notNull.caseTrueFalse(s, self.State))->first
See also [[OCLOperators_whentrue]]
See also [[OCLOperators_whentrue]]

Revision as of 14:50, 7 April 2022

This is a new compact form to write :

if somebool then
  someexpressionwithtypeX
else
  someOtherexpressionwithtypeX
endif

This operator enables you to write the same thing as

somebool.casetruefalse(someexpressionwithtypeX,someOtherexpressionwithtypeX)
Using in EAL

If you want to execute methods in a case/switch -like statement.

This makes a switch like construct look like this:

let x=SomeObject.SomeEnum in
(
  (x=#Enum1).casetruefalse(SomeObject.DoYourThing1,DoNothing);
  (x=#Enum2).casetruefalse(SomeObject.DoYourThing2,DoNothing);
  (x=#Enum3).casetruefalse(SomeObject.DoYourThing3,DoNothing)
)
Using in OCL

If you want to derive a string based on a list of conditions and have an else -statement if none of the expressions where True

self.oclIsInState(#New).caseTrueFalse('New/Ordering', String.nullValue)+
self.oclIsInState(#Waiting).caseTrueFalse('Waiting', String.nullValue)+
self.oclIsInState(#Ordered).caseTrueFalse('Ordered', String.nullValue)->
collect(s| s.notNull.caseTrueFalse(s, self.State))->first

See also OCLOperators_whentrue

This page was edited 47 days ago on 02/10/2024. What links here