Variadische Funktionen in Swift

Swift unterstützt variadische Funktionen. An diese Routinen kann kann eine flexible Anzahl Parameter übergeben. In einigen Einsendeaufgaben von Studenten bin ich auf einige Missverständnisse gestoßen. Was zunächst dynamisch wirkt, ist nur in bestimmte Situationen eine gute Lösung. Und darum geht es in diesem Artikel.

Variadische Funktionen in Swift deklarieren

Funktionen mit variadischen Parametern kannst Du sehr einfach deklarieren:

Über die drei Punkte wird die flexible Parameteranzahl angedeutet. So können keine oder beliebig viele Argumente übergeben werden. Innerhalb der Funktion stehen alle Werte in einem Array zur Verfügung. Einzige Einschränkung: Sie müssen alle den gleichen Datentypen haben. Im Beispiel oben ist es eine Liste mit Integer-Werten.

Variadische Funktionen aufrufen

Der Aufruf ist genauso einfach:

Hier werden drei Zahlen übergeben. In der Funktion summiere werden sie addiert und das Ergebnis zurückgegeben. Im Beispiel würde daher die Summe 12 ausgegeben. Es könnten natürlich auch mehr oder weniger Zahlen sein. Wichtig ist nur, dass sie alle die gleiche Bedeutung haben.

[productCarousel title=“Diese Kurse könnten Dir gefallen“ slug=“ios“]

Variadische Parameter richtig einsetzen

Diese Funktionen darfst Du nur verwenden, wenn alle Werte die gleiche Bedeutung oder Rangfolge haben. Im Beispiel oben ist jede Zahl ein Summand. Es spielt keine Rolle, an welcher Stelle er steht. Gleiches würde für die Multiplikation gelten.

Nehmen wir die Division als weiteres Beispiel. Die Reihenfolge ist bei Dividend und Teiler entscheidend. Du brauchst eine normale Methode. Du darfst den einzelnen Stellen niemals eine spezielle Bedeutung zuweisen. Das folgende Beispiel ist ein absolutes No-Go:

Es sind gleich mehrere Verstöße gegen guten Stil:

  • nur durch Namen und Parameter ist die Verwendung nicht klar
  • es müssten beide Parameter geprüft werden (normale Parameter müssten existieren)
  • am Ende wird doch eine bestimmte Anzahl benötigt

Dieser Code führt in der Praxis früher oder später zu Problemen. Verwende variadische Parameter darum nur, wenn Du das komplette Array gleichberechtigt verarbeitest.

Kommentare (2)

  • Matthias Kleine

    1 Jahr ago

    Sehr schön! Aber außer Summenfunktionen etc. fehlt mir hier auch der Verwendungszweck. Ich habe persönlich noch nie eine solche Funktion im „Entwickleralltag“ gebaut. Du? 🙂

    • Jan Brinkmann

      1 Jahr ago

      Ne, ich auch nicht. Hab es nur bei der Korrektur einer Einsendung gesehen und korrigiert. Daher der Beitrag 🙂

Leave a Comment to Jan Brinkmann Cancel reply

Your email address will not be published.