Mit Variablen und Funktionen haben wir nun schon einiges gelernt. Dabei gibt es noch ein Thema, das erstmal etwas kompliziert klingt, es aber gar nicht ist. Vor allem ist es aber sehr wichtig. Und das sind die Gültigkeitsbereiche. Was bedeutet das?

Variablen sind immer in bestimmten Bereichen gültig. Gültig bedeutet, dass wir darauf zugreifen können. Bzw., dass die Funktionen auf die Variablen zugreifen können. Einmal gibt es Variablen, die global gültig sind. Auch schlicht globale Variablen genannt. Diese gilt es zu vermeiden, wenn es möglich ist. Warum wir das vermeiden sollten, schauen wir uns gleich genauer an.

Dann gibt es noch lokale Variablen. Diese sind nur in bestimmten Bereichen gültig. Ein Bereich ist zum Beispiel der Funktionsrumpf. Eine lokale Variable innerhalb einer Funktion kann nicht außerhalb dieser Funktion gelesen oder verändert werden.

Ein kleines Beispiel:

x = 1

function showX()
  x = 10

  print(x)
end

showX()
print(x)

In der ersten Zeile erstellen wir die Variable x und weisen ihr den Wert 1 zu. Die Funktion showX() definiert ebenfalls eine Variable mit dem Namen x und weist ihr den Wert 10 zu. Danach gibt sie ihren Wert aus.
Am Ende des Programms rufen wir einmal die Funktion showX() auf und danach geben wir mit der print()-Funktion noch mal den Wert der Variablen aus.

Beide Male wird die Zahl 10 ausgegeben. Je nachdem ob du bereits Erfahrung mit anderen Programmiersprachen hast wird dich das Ergebnis verwundern.

Vertauschen wir am Ende die Funktionen showX() und print(), sieht die Ausgabe anders aus. Dann erhalten wir nämlich 1 und 10. Aber woran liegt das? Warum ist das nicht gut? Und was können wir dagegen tun?

Die Sache ist die, dass Variablen standardmäßig global sind. Das bedeutet, dass die Funktion showX() die globale Variable x nimmt und verändert. Vertauschen wir die Funktionen wird erst die original Variable angezeigt, die dann erst danach durch die Funktion bearbeitet wird.

Andersrum sind auch Variablen, die innerhalb einer Funktion definiert werden, außerhalb gültig. Das bedeutet, dass wir die Variable x, die innerhalb der Funktion erstellt wurde, verändern könnten.

Nun könnte man natürlich sagen, dass man einfach sicherstellt immer einen neuen Variablennamen zu verwenden. Theoretisch ergibt das Sinn, in der Praxis ist das aber unpraktisch. Je umfangreicher der Code wird, desto wahrscheinlicher wird es, dass du irgendwann mal einen Namen doppelt verwendest. Dabei ist es dann auch gut möglich, dass erstmal gar nicht auffällt, dass etwas falsch läuft. Und erst wenn man knietief in der Arbeit steckt, macht sich der Fehler bemerkbar und es kann Stunden und Tage dauern um ihn zu finden.

Daher sollte man immer globale Variablen vermeiden, wo es nur geht. Aber wie können wir das vermeiden? Indem wir die Variable lokal deklarieren. Das erreichen wir, indem wir das Schlüsselwort local vor eine Variable setzen.

function showX()
  local x = 10

  print(x)
end

Innerhalb einer Funktion sollten wir immer das Schlüsselwort local verwenden. Dadurch wird innerhalb der Funktion eine neue Variable definiert, die sich nicht mit der Variablen außerhalb der Funktion überschneidet. Und auch nur innerhalb dieses Bereiches gültig ist. Daher können wir auf diese Variable von außerhalb der Funktion nicht mehr zugreifen.

Aber; zerbreche dir nicht den Kopf darüber ob eine Variable jetzt global oder lokal sein sollte. Wenn du sie an vielen Stellen im Skript benötigst kannst du sie ruhig global deklarieren. Aber meistens ist man auf der sicheren Seite, wenn man das Schlüsselwort local verwendet. Sobald du etwas Erfahrung gesammelt hast wirst du auf viele Fälle stoßen, in denen sich der Nutzen von selbst ergibt.

Tags: Grundlagen Tutorial

Letzte Bearbeitung:27.02.21 13:19 Uhr

 246

^ Nach oben

 Kommentare

Es wurden noch keine Kommentare geschrieben.