2021 April Release

ConstantsPermanent link for this heading

In all DSL files it is possible to define constants. If the target version of folio supports the object class COOSYSTEM@1.1:TypedExpression, these constants are part of the software component and can be reused in other software components.

Example

const DrinkType[] AlcoholicDrinksConst = [DT_SHOT, DT_LONGDRINK, DT_SOUR, DT_HIGHBALL];
const DrinkType[] NonAlcoholicDrinksConst = [DT_SOFTDRINK, DT_WATER, DT_JUICE];

const SomeLines LineConst = {
  line1 = "First 1",
  line2 = "Second line"
}

These constants then can be used in generic assignments or inside of expressions.

Example

const SomeLines LineConstEx = {
  LineConst,
  line2 = "Second line override",
  line3 = "Third line"
}

instance Bar MyDefaultBar {
  barinitwith = AlcoholicDrinksConst;
  barinitwithout = [DT_WATER, NonAlcoholicDrinksConst];
  barinfo = {
    LineConstEx,
    line1 = "First line from init"
  }
}

instance Expression ex {
  exprtext = expression {
    DrinkType aDrink = DT_FIZZ;
    if (aDrink in AlcoholicDrinksConst) {
      coort.Trace("this drink contains alcohol", aDrink);
    }
    else if (aDrink in NonAlcoholicDrinksConst) {
      coort.Trace("this drink does not contain alcohol", aDrink);
    }
    else {
      coort.Trace("this drink might contain alcohol", aDrink);
    }
    SomeLines myline = {
      LinesConst,
      line3 = "a new line"
    };
    SomeLines[] mylines = [
      LinesConst,
      {
        line3 = "a new line"
      }
    ];
    mylines = LinesConst;
  }
}