Oft schreibt man eine Reihe von Funktionen, die alle mit dem gleichen Thema zu tun haben. Und oft möchte man diese Funktionen auch in anderen Skripten verwenden, weitergeben oder einfach nicht im Hauptskript sehen. Dafür können wir uns eine Funktionsbibliothek erstellen. Eine solche Bibliothek wird in Lua Modul genannt.

Eine Funktionsbibliothek haben wir bereits kennengelernt. Und zwar table. Die gehört zur Lua-Standardbibliothek und muss nicht gesondert geladen werden. Diese Funktionen sind also immer verfügbar.

table.insert()
-- Bibliothek.Funktion()

In diesem Tutorial schreiben wir uns ein eigenes kleines Modul. Es gibt verschiedene Wege Module zu erstellen und zu laden. Einige davon sind veraltet. Deswegen beschäftigen wir uns hier nur mit den aktuellen und empfohlenen Möglichkeiten. Wenn du dich aber weiter mit Lua beschäftigst wirst du früher oder später auf Code stoßen, der ein klein wenig anders aufgebaut ist.

Im vorherigen Kapitel haben wir Tables kennengelernt. Und dort habe ich bereits erwähnt, dass Table sehr dynamisch sind. Wie dynamisch sie wirklich sind, wird dieses Kapitel zeigen. Denn ein Modul ist nichts anderes als ein Table in dem wir Funktionen hinterlegen.

Um damit zu beginnen lege eine neue Datei an und nenne sie zum Beispiel mymodule.lua. Für dieses Beispiel sollte die Datei im gleichen Verzeichnis liegen wie das das Skript, in dem wir das Modul verwenden.

-- Module: mymodule.lua

-- Wir erstellen ein leeres Table
local mymodule = {}

-- Dem Funktionsnamen geht nun der Name des Table voran
-- getrennt mit einem Punkt
function mymodule.foo()
  print("Hello World!")
end

-- Am Ende müssen wir das Table zurückgeben
return mymodule

In der ersten Zeile erstellen wir eine neue lokale Variable und machen daraus ein Table. Um unserem Modul nun Funktionen zuzuweisen müssen wir lediglich beim Funktionsnamen den Modulnamen mit angeben und das Ganze mit einem Punkt trennen. Also Modulname.Funktion().

Am Ende geben wir mit „return“ das gesamte Modul aus. Denn um es zu laden, weisen wir es einer Variablen zu. Aber schauen wir uns das direkt mal an. Erstelle einfach eine neue Datei, die dann dein Hauptskript darstellt.
In diesem Skript laden wir das Modul nun wie folgt:

local mymodule = require "mymodule"

Mit dem Schlüsselwort require weiß Lua, dass hier ein Modul geladen werden muss und sucht an verschiedenen Stellen nach einer .lua-Datei mit diesem Namen. Beachte, dass du hier am Ende nicht die Dateiendung anfügst. Falls du ein Modul aus einem Unterordner laden willst, verwendest du statt der Schrägstriche einen Punkt:

local mymodule = require "module.mymodule"

Und wenn du soweit bist, kannst du nun deine eigene Funktion aus dem Modul aufrufen:

mymodule.hallo()

Versuche doch mal eine eigene kleine Funktion hinzuzufügen.

Tags: Grundlagen Tutorial

Letzte Bearbeitung:27.02.21 14:34 Uhr

 261

^ Nach oben

 Kommentare

Es wurden noch keine Kommentare geschrieben.