Benutzer-Werkzeuge

Webseiten-Werkzeuge


scripting:tutorials:level2:functions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
scripting:tutorials:level2:functions [2023/09/09 17:01] fritz_98scripting:tutorials:level2:functions [2023/09/09 17:17] – [Zu viele und zu wenige Parameter] fritz_98
Zeile 201: Zeile 201:
 werden nur die ersten drei beachtet und addiert, der Rest verworfen. Die Funktion hat keine Möglichkeit, auf die Argumente zuzugreifen. Allerdings wird **kein** Fehler angezeigt! Darauf zu achten, einer Funktion nicht zu viele Argumente zu übergeben, wird dem Programmierer überlassen. werden nur die ersten drei beachtet und addiert, der Rest verworfen. Die Funktion hat keine Möglichkeit, auf die Argumente zuzugreifen. Allerdings wird **kein** Fehler angezeigt! Darauf zu achten, einer Funktion nicht zu viele Argumente zu übergeben, wird dem Programmierer überlassen.
  
-Der Nutzen, den man daraus ziehen kann, ist eingeschränkt. Im Artikel zur [[ scripting:tutorials:level2:lua_library |Lua-Standardbibliothek]] wird die Funktion ''unpack'' beschrieben, mit der ein numerisches Table ([[ scripting:tutorials:level1:tables#tables_als_listen |Liste]]) "ausgepackt" wird. Die Funktion gibt jeden Eintrag im Table einzeln als Rückgabewert aus (siehe auch den Abschnitt oben über mehrere Rückgabewerte). ''unpack'' kann also dazu benutzt werden, die Inhalte eines numerischen Tables einzeln als Argumente zu übergeben. Mit der Funktion ''SumOfThree'' können so die ersten drei Zahlen in so einem Table addiert werden:+Der Nutzen, den man daraus ziehen kann, ist eingeschränkt. Im Artikel zur [[ scripting:tutorials:level2:lua_library |Lua-Standardbibliothek]] wird die Funktion ''unpack'' beschrieben, mit der ein numerisches Table ([[ scripting:tutorials:level1:tables#tables_als_listen |Liste]]) "ausgepackt" wird. Die Funktion gibt jeden Eintrag im Table einzeln als Rückgabewert aus (siehe auch den Abschnitt [[ scripting:tutorials:level2:functions#mehrere_rueckgabewerte |oben]] über mehrere Rückgabewerte). ''unpack'' kann also dazu benutzt werden, die Inhalte eines numerischen Tables einzeln als Argumente zu übergeben. Mit der Funktion ''SumOfThree'' können so die ersten drei Zahlen in so einem Table addiert werden:
 <code lua> <code lua>
 local Numbers = {3, 25, 14, 9, 11, 17, 36} local Numbers = {3, 25, 14, 9, 11, 17, 36}
Zeile 252: Zeile 252:
 Auch hier ist wieder zu beachten, dass zu wenige Argumente nicht per se als Fehler gelten und als Problemursache häufig versteckt auftreten. In unserem Beispiel mit der Summe können damit aber alle Parameter optional gemacht werden, sodass die nicht zwingend besetzt werden müssen. Auch hier ist wieder zu beachten, dass zu wenige Argumente nicht per se als Fehler gelten und als Problemursache häufig versteckt auftreten. In unserem Beispiel mit der Summe können damit aber alle Parameter optional gemacht werden, sodass die nicht zwingend besetzt werden müssen.
  
-**Achtung**: Auf diese Weise solltest du höchstens **einen** Parameter als optional definieren. Bedenke, dass in unserem Beispiel für die Angabe von ''_C'' **zwingend** die Angabe von ''_B'' notwendig ist. Es lassen sich demnach keine Parameter "überspringen". Wenn du mehrere optionale Parameter anbieten willst, solltest du den Parameter als Table definieren (siehe auch das Beispiel ''SaySomething'' aus dem Abschnitt oben über verkürzte Funktionsaufrufe). Dadurch bekommt jeder Parameter einen Namen und kann unabhängig von allen anderen angegeben werden. \\+**Achtung**: Auf diese Weise solltest du höchstens **einen** Parameter als optional definieren. Bedenke, dass in unserem Beispiel für die Angabe von ''_C'' **zwingend** die Angabe von ''_B'' notwendig ist. Es lassen sich demnach keine Parameter "überspringen". Wenn du mehrere optionale Parameter anbieten willst, solltest du den Parameter als Table definieren (siehe auch das Beispiel ''SaySomething'' aus dem Abschnitt [[ scripting:tutorials:level2:functions#verkuerzte_funktionsaufrufe |oben]] über verkürzte Funktionsaufrufe). Dadurch bekommt jeder Parameter einen Namen und kann unabhängig von allen anderen angegeben werden. \\
 Diesem Prinzip folgt beispielsweise die aus [[ scripting:tutorials:level1:enemy_ai#setupplayerai |Ebene 1 bekannte Funktion]] ''SetupPlayerAi'', die viele Optionen für die Definition eines KI-Spielers bietet, die unabhängig voneinander gewählt werden können. Diesem Prinzip folgt beispielsweise die aus [[ scripting:tutorials:level1:enemy_ai#setupplayerai |Ebene 1 bekannte Funktion]] ''SetupPlayerAi'', die viele Optionen für die Definition eines KI-Spielers bietet, die unabhängig voneinander gewählt werden können.
  
scripting/tutorials/level2/functions.txt · Zuletzt geändert: 2024/05/17 10:02 von fritz_98