sublists

Dieser Ausdruck berechnet alle Unterlisten der bereitgestellten Liste und gibt diese Unterlisten als Liste von Listen zurück.

Für eine Liste, die n Elemente enthält, gibt es 2n Unterlisten (inklusive der leeren Liste und der ursprünglichen Liste).

Die Reihenfolge der Listeneinträge in den einzelnen Unterlisten ist mit der Reihenfolge in der ursprünglichen Liste identisch.

<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_sublists"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">
  <Class name="Household">

    <Attribute name="members">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <fixedlist>
          <listof>
            <ruleclass name="Person"/>
          </listof>
          <members>
            <create ruleclass="Person">
              <String value="Mother"/>
            </create>
            <create ruleclass="Person">
              <String value="Father"/>
            </create>
            <create ruleclass="Person">
              <String value="Child"/>
            </create>
          </members>
        </fixedlist>
      </derivation>
    </Attribute>

    <!-- All the different combinations of members of the household
 -->
    <Attribute name="memberCombinations">
      <!-- Note that the type is list of lists of Persons -->
      <type>
        <javaclass name="List">
          <javaclass name="List">
            <ruleclass name="Person"/>
          </javaclass>
        </javaclass>
      </type>
      <derivation>
        <sublists>
          <reference attribute="members"/>
        </sublists>
      </derivation>
    </Attribute>

  </Class>

  <Class name="Person">

    <Initialization>
      <Attribute name="name">
        <type>
          <javaclass name="String"/>
        </type>
      </Attribute>
    </Initialization>

  </Class>

</RuleSet>

In diesem Beispielregelwerk wird der Wert von memberCombinations als Liste der folgenden 8 Listen berechnet: