Ersetzen Sie in einem zweiten Schritt alle Modul Platzhalter ModuleName mit
MyChecksums.
Anschließend fügen Sie noch unsere checksum Funktion hinzu und ersetzen
den Funktionsnamen durch MyChecksums.Mod256Sum. Die Modul Datei soll-
te jetzt wie folgt aussehen:
1
l o c a l MyChecksums = { }
2
3
function MyChecksums . Mod256Sum ( data )
4
l o c a l chksum = 0
5
f o r i =1 ,# data do
6
chksum = chksum + data : b y t e ( i )
7
end
8
r e t u r n chksum % 256
9
end
10
11
function MyChecksums . v e r s i o n ( )
12
r e t u r n " 1 . 0 . 0 "
13
end
14
15
r e t u r n MyChecksums
Module sind in Lua nichts anderes als Tabellen (eine weitere Anwendung für
dieses extrem leistungsfähige Konzept).
In Zeile 1 erstellen wir eine leere Tabelle wobei der Name unerheblich ist. An-
schließend fügen wir unsere Checksum Funktion in der Tabelle hinzu, indem
wir dem Funktionsnamen getrennt durch einen Punkt dem Tabellennamen vor-
anstellen. Lua verwendet den Funktionsnamen als Index für den späteren Mo-
dul Zugriff.
In unserem Beispiel sind es zwei Funktionen: Mod256Sum und Version.
Zeile 15 liefert die komplette Tabelle mit all Ihren Funktionen. Dabei wird die
Tabelle, nicht aber ihr Name zurückgegeben. Der Name der Tabelle ist deshalb
nicht von belang, solange er im Modul selbst einheitlich verwendet wird.
Speichern Sie die Modul Datei und wechseln Sie zurück in den SKETCH Buffer.
Geben Sie hier folgende Zeilen ein:
1
checksums = r e q u i r e " MyChecksums "
2
p r i n t ( checksums . Mod256Sum ( " H e l l o w o r l d " ) )
Das Lua Schlüsselwort require in Zeile 1 lädt unsere neue Modul Datei und
weist dieses (die Modul Tabelle) der Variable checksums zu.
Das es sich in der Tat um eine Tabelle handelt können Sie mit folgendem Ein-
zeiler selbst überprüfen:
p r i n t ( t y p e ( checksums ) )
(Die Lua type Funktion gibt den Typ des übergebenen Arguments als String
zurück.
Sie können jederzeit weitere Prüfsummen Funktionen zu Ihrem checksum Mo-
dul hinzufügen. Sie müssen lediglich darauf achten, dem Funktionsnamen im-
mer den Namen der lokalen Modul Tabelle getrennt durch einen Punkt voran
zu stellen. Nur dadurch wird die Funktion Teil der vom Modul bereitgestellten
Tabelle.
1
function MODULENAME.FUNCTIONNAME ( . . . )
2
f u n c t i o n code . . .
17.1. ERSTE SCHRITTE
> t a b l e
201