Flexible Anzahl an Argumenten
Die meisten Funktionen benötigen eine feste Anzahl an Argumenten. Mit Vorgabe-Werten ist die Anzahl der Argumente in gewisser Weise auch flexibel, jedoch ist die maximale Anzahl der Argumente damit immer begrenzt. Um wirklich eine flexible Anzahl an Werten übergeben zu können, werden "VarArgs" (variable Argumente) verwendet.
Bei der Definition einer Funktion werden hierzu an die letzte Parameter-Variable 3 Punkte angehängt.
::test( Str a, Int b... )
Die Variable b enthält nun immer eine beliebig lange Liste mit Integer-Werten.
::test( Str a, Int b... )
Print "A: " + a
Print "B: " + b
this.test( "Foo" )
this.test( "Bar", 3 )
this.test( "Bak", 3, 7, 9 )
Beim ersten Aufruf enthält die Variable 'b' eine leere Liste.
Übergabe einer Liste
Angenommen, es existiert bereits eine Liste mit Zahlen, die an diese Funktion übergeben werden sollen. Die Liste direkt zu übergeben führt jedoch zu einem Fehler führen, da nur Integer-Zahlen und keine Liste akzeptiert wird:
data = [ 9,6,2,7,5,9,4,3 ]
this.test( "Foo", data )
Es soll ja auch nicht die Liste selbst, sondern nur deren Inhalt übergeben werden. Bei diesem Problem hilft ein VarLet, also eine eine Referenz auf die Variable. Dieses wird erstellt, indem bei der Übergabe vor die Variable ein Doppelpunkt geschrieben wird.
::test( Str a, Int b... )
Print "A: " + a
Print "B: " + b
data = [ 9,6,2,7,5,9,4,3 ]
this.test( "Foo", :data )