Java Reference
In-Depth Information
Seit der Version 5.0 von Java existiert mit dem sogenannten varargs-Konstrukt eine Lösung für die-
ses Problem und wir nehmen dieses Konstrukt natürlich auch in die Hamster-Sprache auf. Versieht
man in der formalen Parameterliste einer Funktion einen Parameter hinter dem Typ mit drei Punk-
ten, dann bedeutet das, dass an dieser Stelle beim Funktionsaufruf beliebig viele aktuelle Parameter
dieses Typs übergeben werden können.
1 int summe(int... zahlen) {
// varargs-Parameter
// Implementierung siehe unten
2
3 }
4
5 void main() {
6
int s1 = summe(3, 5);
int s2 = summe(66, 5, s1);
7
s1
= summe(67, s1, -3, s2);
8
s2
= summe(4, 7, s1, s2 - 2, 88);
9
s2
= summe(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
10
11 }
Nun ist auch der Aufruf der Funktion summe mit fünf Parametern und sogar ein Aufruf mit zehn
Parametern möglich. In allen Fällen wird die Funktion summe mit dem varargs-Parameter aufgerufen.
Beachten Sie bitte: Eine Funktion darf maximal einen varargs-Parameter besitzen und dieser muss
an letzter Stelle der formalen Parameterliste stehen.
Wie kann nun aber die Funktion summe implementiert werden? Sei parameter der Name eines
formalen varargs-Parameters, dann gilt:
• Der Ausdruck parameter.length liefert innerhalb des Funktionsrumpfes die Anzahl an ak-
tuellen varargs-Parametern beim Aufruf der Funktion.
• Sei a ein int-Ausdruck, der einen Wert zwischen 0 und parameter.length - 1 liefert. Dann
liefert der Ausdruck parameter[a] innerhalb des Funktionsrumpfes den Wert des ( a -1)-sten
aktuellen varargs-Parameters.
Damit kann die Funktion summe wie folgt implementiert werden:
int summe(int... zahlen) {
int ergebnis = 0;
int parameterNummer = 0;
while (parameterNummer < zahlen.length) {
ergebnis += zahlen[parameterNummer];
parameterNummer++;
}
return ergebnis;
}
In der while-Schleife werden alle übergebenen varargs-Parameter summiert.
Achten Sie bitte darauf, dass der Ausdruck parameter[0] den ersten aktuellen varargs-Parameter-
wert und parameter[parameter.length - 1] den letzten aktuellen varargs-Parameterwert lie-
fern. Beim Zugriff auf parameter[parameter.length] würde es zu einem Laufzeitfehler kom-
men, weil ja ein entsprechender Parameter gar nicht existiert.
Search WWH ::




Custom Search