OCLOperators casetruefalse
(Replacing message template with parser tag)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This is a new compact form to write :
<message>Write the content here to display this box</message>
This is a new compact form to write:
  if somebool then
  if somebool then
   someexpressionwithtypeX
   someexpressionwithtypeX
Line 5: Line 6:
   someOtherexpressionwithtypeX
   someOtherexpressionwithtypeX
  endif
  endif
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 =====
===== Usage in EAL =====
If you want to execute methods in a case/switch -like statement.
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 19: Line 20:
  )
  )


===== Using in OCL =====
===== Usage 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
If you want to derive a string based on a list of conditions and have an else-statement if none of the expressions were True:
  self.oclIsInState(#New).caseTrueFalse('New/Ordering', String.nullValue)+
  (self.oclIsInState(#New).caseTrueFalse('New/Ordering', String.nullValue)+
self.oclIsInState(#Waiting).caseTrueFalse('Waiting', String.nullValue)+
  self.oclIsInState(#Waiting).caseTrueFalse('Waiting', String.nullValue)+
self.oclIsInState(#Ordered).caseTrueFalse('Ordered', String.nullValue)->
  self.oclIsInState(#Ordered).caseTrueFalse('Ordered', String.nullValue))->
  collect(s| s.notNull.caseTrueFalse(s, self.State))->first
  collect(s| s.notNull.caseTrueFalse(s, self.State))->first
The collect construct at the end can when the result, and if null do the "else" statement.
The collect construct at the end can when the result, and if null, do the "else" statement. '''Note'''! Parenthesis around the string concatenation.


See also [[OCLOperators_whentrue]]
See also [[OCLOperators_whentrue]]
[[Category:OCLOperators]]
{{Edited|July|12|2024}}

Latest revision as of 07:50, 17 June 2024

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)
Usage 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)
)
Usage 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 were 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

The collect construct at the end can when the result, and if null, do the "else" statement. Note! Parenthesis around the string concatenation.

See also OCLOperators_whentrue

This page was edited 95 days ago on 06/17/2024. What links here