Lua our powerful scripting language

sevval

Lua ist eine einfache und effektive Skriptsprache.  Sie wird als Erweiterungssprache in einer Vielzahl von Anwendungen verwendet, von World of Warcraft bis Adobe Photoshop – und natürlich smartextract!  Lua hat viele Gemeinsamkeiten mit Python, aber auch einige bemerkenswerte Unterschiede. 

Dieser Artikel zeigt die wichtigsten Punkte auf, die Sie beachten sollten. Wenn Sie bereits mit Python vertraut sind, werden Sie in wenigen Minuten in der Lage sein, in Lua zu programmieren! 

Grundlegende Syntax

In Lua werden Zeichenketten und Zahlen auf ähnliche Weise geschrieben wie in Python. Auch Funktionsaufrufe sind recht vertraut. Es gibt jedoch ein paar unterschiedliche Elemente:  

Boolesche Werte: In Lua werden boolesche Werte als true und false geschrieben.

Nullwert: Das Äquivalent zu Python’s None wird in Lua nil genannt. 

Kommentare: Jeder Text, der auf — folgt, wird als Kommentar behandelt. 

Operatoren

Boolesche und numerische Operatoren sind größtenteils identisch mit denen in Python, mit zwei bemerkenswerten Ausnahmen: 

Der Operator “nicht gleich” wird als ~= statt als != geschrieben. 

Der Operator zur Verkettung von Zeichenketten lautet …  Anders als in Python führt der Versuch, den Operator + zum Addieren von Zeichenketten zu verwenden, zu einem Fehler. 

Codeblöcke und Kontrollfluss

Leerzeichen haben in Lua keine Bedeutung, so dass die Einrückung optional ist. Dies ist ein Unterschied zu Python, wo die Einrückung von entscheidender Bedeutung ist. In Lua werden Codeblöcke mit dem Schlüsselwort end abgeschlossen, um eine klare Abgrenzung der Codesegmente zu gewährleisten. 

Die numerische for-Schleife sieht wie folgt aus: 

Datenstrukturen in Lua

‘Dictionaries’ In Lua wird das Äquivalent zu einem Python-Dictionary als Tabelle bezeichnet. Die Syntax ist recht intuitiv, obwohl sie sich leicht von der in Python unterscheidet: 

Um auf Elemente zuzugreifen, verwenden Sie eckige Klammern mit dem Schlüsselnamen. Wenn ein Schlüssel nicht existiert, gibt Lua einfach nil zurück, ohne einen Fehler zu verursachen:

Um über die Einträge in einer Tabelle zu iterieren, verwenden Sie die pairs Funktion:

Listen

Lua verfügt nicht über einen eigenen Listentyp. Stattdessen verwendet es Tabellen mit numerischen Indizes, um Listen zu erstellen. Hier ist ein einfaches Beispiel:

Ein wesentlicher Unterschied zu Python ist, dass die Indizierung bei 1 beginnt. Sie können die Größe der Liste mit dem Operator # bestimmen. So funktioniert es:

Um über eine Liste zu iterieren, können Sie eine numerische for-Schleife oder die ipairs Funktion verwenden, die der enumerate-Funktion von Python ähnlich ist:

Objekte und Module

Lua hat zwar kein eingebautes Objektsystem, bietet aber eine Syntax, die ein objektähnliches Verhalten unter Verwendung von Tabellen ermöglicht. Wenn ein Tabellenschlüssel ein gültiger Bezeichner ist, können Sie darauf mit der Punktnotation zugreifen:

Module in Lua, wie z. B. die built-in string, table, and math Module, sind im Wesentlichen Tabellen, die Funktionen enthalten. Lua erlaubt auch Methodenaufrufe in Doppelpunkt-Syntax, was den Code lesbarer macht:

Der letzte Ausdruck oben stützt sich auf den leistungsstarken metatable-Mechanismus, auf den wir hier nicht näher eingehen werden.

Standardbibliotheken in Lua

Im Vergleich zu Python ist die Sammlung eingebauter Funktionen in Lua relativ klein, aber sie enthält einige leistungsfähige Werkzeuge:

– require-Funktion: Diese Funktion wird verwendet, um Module zu laden. Normalerweise gibt sie eine Funktion oder eine Tabelle von Funktionen zurück. In smartextract ermöglicht require den Zugriff auf eine Vielzahl von maschinellen Lernmodellen und fortschrittlichen Bibliotheken für die Dokumentenverarbeitung, wodurch die Möglichkeiten von Lua erheblich erweitert werden.

– string -Tabelle: Diese Tabelle enthält eine Reihe von Funktionen zur Bearbeitung von Zeichenketten, z. B. für den Mustervergleich. Diese Funktionen sind für die effektive Bearbeitung von Textverarbeitungsaufgaben unerlässlich.

– table- Tabelle: Diese Tabelle bietet verschiedene Funktionen zur Tabellenmanipulation, darunter Dienstprogramme zum Sortieren und Verwalten von Tabellen. Diese Funktionen sind entscheidend für die Organisation und Verarbeitung von Daten.

-math-Tabelle: Die Mathe-Tabelle enthält eine Reihe von mathematischen Funktionen, wie z. B. math.min, math.max und math.exp. Diese Funktionen sind für die Durchführung mathematischer Operationen nützlich.

-pairs und ipairs Funktionen: Diese Funktionen wurden bereits in früheren Abschnitten hervorgehoben und werden zur Iteration über Tabellen verwendet. pairs iteriert über alle Einträge in einer Tabelle, während ipairs speziell über numerische Einträge iteriert.

– Funktionen zur Fehlerbehandlung: Die Funktion error(message) löst einen Fehler mit einer bestimmten Meldung aus, während assert(v, message) einen Fehler auslöst, wenn der Wert v gleich null oder falsch ist.

 

Beachten Sie, dass einige Standardbibliotheken, die in normalem Lua verfügbar sind, wie z.B. os, io und debug, nicht in smartextract enthalten sind, wahrscheinlich aufgrund ihrer speziellen Anwendungsfälle oder Leistungsüberlegungen.

Weitere bemerkenswerte Unterschiede

Hier sind ein paar wichtige Unterschiede zwischen Lua und Python, die Sie kennen sollten: 

1-basierte Indizierung: Im Gegensatz zu Python, das eine 0-basierte Indizierung verwendet, beginnt die Indizierung in Lua bei 1. Außerdem ist der Endindex bei String- und Tabellenoperationen inklusive:

Bedingte Tests: In Lua sind die einzigen Werte, die in bedingten Anweisungen als falsch bewertet werden, nil und false. Alle anderen Werte, einschließlich Null und leere Sammlungen, werden als wahr angesehen:

Auslassen von Klammern: Klammern können bei Funktionsaufrufen weggelassen werden, wenn das Argument eine literale Zeichenkette oder eine Tabelle ist:

Umfang der Variablen: Standardmäßig sind die Variablen in Lua global. Um eine lokale Variable zu erstellen, müssen Sie das Schlüsselwort ‘local’ verwenden.

Ausführlichere Informationen zu den Merkmalen und Funktionen von Lua finden Sie im Lua-Referenzhandbuch. Außerdem bietet “Programming in Lua” von Roberto Ierusalimschy eine freundliche Einführung in die Lua-Programmierkonzepte und ist für Neueinsteiger in die Sprache sehr empfehlenswert.

Inhaltsverzeichnis