joinlists

Dieser Ausdruck erstellt eine neue Liste, indem einige vorhandene Listen zusammengeführt werden.

Der Ausdruck joinlists verwendet als Eingabe ein einziges Argument, bei dem es sich um eine Liste von Listen handeln muss.

Die Reihenfolge der Einträge in der neuen Liste ist mit ihrer Reihenfolge in der Quellenliste identisch. Die Listen werden in der Reihenfolge zusammengeführt, in der sie bereitgestellt werden.

Falls die zusammenzuführenden Listen doppelte Einträge enthalten können, kann es sinnvoll sein, den Ausdruck joinlists in einen Ausdruck "removeduplicates" (siehe removeduplicates) einzuschließen.

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

    <Attribute name="pets">
      <type>
        <javaclass name="List">
          <ruleclass name="Pet"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

  </Class>

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

  </Class>

  <Class name="Household">

    <Attribute name="members">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- get all the pets in the household,
         by joining together each person's
         list of pets -->
    <Attribute name="allPets">
      <type>
        <javaclass name="List">
          <ruleclass name="Pet"/>
        </javaclass>
      </type>
      <derivation>
        <joinlists>
          <!-- a list of list of pets, one
               list for each household
               member -->
          <dynamiclist>
            <list>
              <reference attribute="members"/>
            </list>
            <listitemexpression>
              <reference attribute="pets">
                <current/>
              </reference>
            </listitemexpression>
          </dynamiclist>

        </joinlists>
      </derivation>
    </Attribute>

  </Class>

</RuleSet>