Inhaltsverzeichnis
Funktionen sind der Hauptmechanismus für die Abstraktion von Deklarationen und Ausdrücken in Lua, können sie bestimmte Aufgaben ausführen, die in anderen Sprachen meist Prozeduren oder Unterprogramme genannt werden.Die Funktionen werden meistens mit Klammern und einer Liste von Argumenten geschrieben, die es ermöglichen, eine bestimmte Aktion auszuführen, wenn diese Funktionen möglicherweise keine Argumente benötigen, jedoch die Klammern angegeben werden müssen, sehen wir uns ein Beispiel an von Funktionen, die wir als Ausdrücke im Inneren verwenden Lua:
print "Hello World" print ("Hello World") dofile 'file.lua' dofile ('file.lua') print [[multi-line array msg]] print ([[multi-line array msg]]) f { var1 = 17, var2 = 30} f ({var1 = 17, var2 = 30}) Typ {} Typ ({})Gemäß dem Beispiel konnten wir die Funktionen in beide Richtungen schreiben, wobei diese gleichermaßen gültig sind.
Ein Programm in Lua Sie können sowohl in C als auch in der Sprache selbst definierte Funktionen verwenden, zum Beispiel alle Standardfunktionen der Bibliothek von Lua sind eingeschrieben C, was für Entwickler nicht relevant ist, da der Aufruf von beiden keinen Unterschied macht.
In diesem Wissen unterscheidet sich die Definition nicht von anderen Sprachen, die konventionelle Syntax einer Funktion wird durch den Namen der Funktion, eine Liste von Parametern und den Funktionskörper, der eine Liste von Deklarationen ist, bestimmt veranschaulichen, was erklärt wurde:
Funktion Operation (var) lokale Summe = 0 Summe = var + 6 Rückgabe Summe endWir haben unsere Funktion bereits, aber auf diese Weise ist sie nicht sehr nützlich, da sie durch Senden des benötigten Parameters aufgerufen werden muss. Dafür können wir unserem Code eine weitere Zeile hinzufügen, um sie aufzurufen:
Funktion Operation (var) lokale Summe = 0 Summe = var + 6 Rückgabesumme Enddruck (Operation (57))Wenn wir unser Beispiel in unserem Terminal ausführen, können wir sehen, wie unser Programm den Parameter empfängt und gemäß den in unserer Funktion definierten Operationen einen Wert zurückgibt:
VERGRÖSSERN
Funktion multiple_function (a, b) Rückgabe a oder b endSehen wir uns im folgenden Codeteil an, wie wir die Funktion mit verschiedenen Parametern aufrufen und auf der rechten Seite wie die Zuweisung durchgeführt wird:
f (8) a = 8, b = null f (8, 15) a = 8, b = 15 f (8, 15, 4) a = 8, b = 15 (Der Wert 4 wird verworfen)Obwohl dieses Verhalten zu Programmierfehlern führen kann, ist es auch nützlich, insbesondere für Standardargumente.
Eine unkonventionelle, aber durchaus nützliche Funktion von Lua, ist die Möglichkeit, mehrere Ergebnisse zurückzugeben, sogar vordefinierte Sprachfunktionen können dies tun. Ein Beispiel dafür ist die Funktion string.find, die nach einem Vorkommensmuster in einer gegebenen Zeichenfolge sucht, gibt diese Funktion zwei Indizes zurück, der erste ist der Index, wo dieses Muster beginnt und der zweite ist, wo es endet. Sehen wir uns ein praktisches Beispiel für die Verwendung dieser Funktion an, das wir können in unserer interaktiven Konsole perfekt machen:
Funktion maximaler Wert (a) lokales Minimum = 1 lokales m = a [Minimum] für i, val in iPaaren (a) do if val> m then minimum = i; m = val end end return m, minimaler Enddruck (maximaler Wert ({8,10,23,12,5}))Wie wir sehen, ist unsere Funktion recht einfach und gibt in unserer Rückgabe zwei Werte zurück, die in diesem Fall gemäß dem, was wir senden, 23 als größte Zahl und 3 als Position zurückgeben sollten, mal sehen:
VERGRÖSSERN
function example_function (…) local s = 0 für i, v in ipairs {…} do s = s + v end return s end print (example_function (8, 19, 30, 14, 10))Wenn wir Beobachter in der Definition unserer Funktion sind, haben wir drei Punkte (… ) innerhalb der Klammern bedeutet dies, dass unsere Funktion eine variable Anzahl von Argumenten akzeptiert, und wenn die Funktion aufgerufen wird, werden alle gesendeten Argumente intern gesammelt und dann mit der Funktion verarbeitet ipairsSehen wir uns die Ausgabe unserer Funktion an, die dafür verantwortlich ist, alle an sie gesendeten Argumente hinzuzufügen:
VERGRÖSSERN
Senden von Argumenten in Lua es ist positionell, das heißt, wenn wir eine Funktion aufrufen, entsprechen diese Argumente den Parametern entsprechend ihrer Position, das erste Argument entspricht dem ersten Parameter und so weiter, obwohl es manchmal nicht schaden würde, die Argumente mit Namen anzugeben.
Diese Funktionalität ähnelt Variablenargumenten, aber wenn wir die Namen für unsere Argumente definieren, ist der Umgang mit ihnen viel einfacher, wobei wir diese Funktionalität nur durch die Verwendung einer Tabelle oder Anordnung ausführen können, was sehr nützlich ist, wenn unsere Funktion einige dieser Parameter verwendet Sehen wir uns optional den folgenden Aufruf einer Funktion an, die eine bestimmte Anzahl von Parametern empfängt, um ein Fenster zu erstellen:
create_window {x = 0, y = 0, width = 0, height = 200, title = 'Lua Window', background = "blue", borders = true}Auf diese Weise ist die Funktion create_window Es steht Ihnen frei, diese Argumente namentlich zu überprüfen, wenn Sie möchten, sehen wir uns an, wie wir diese Argumente in unserer Funktion erhalten und was wir damit machen können:
Funktion create_window (Optionen) - Prüfe obligatorische Optionen if type (options.title) ~ = "string" then error ("no title") elseif type (options.width) ~ = "number" then error ("kein Maß für die Breite " ) elseif type (options.height) ~ =" Zahl "then error ("keine Höhenmessung") end - wir wenden die Optionen create_window an (options.title, options.x oder 0, options.y oder 0, options .width, options.height, options.background oder "white", options.edges) EndeWie wir sehen, sind die Möglichkeiten in unseren Programmen mit dieser Funktionalität viel größer, und obwohl dieses Beispiel illustrativ ist, können wir sehen, wie wir die genannten Argumente in unseren Funktionen anwenden können.
So beenden wir dieses Tutorial, in dem wir gelernt haben, wie man mit Funktionen in Lua, von der herkömmlichen Syntax, die wir in anderen Sprachen finden können, zu den Merkmalen der Sprache wie den mehreren Ergebnissen, variablen Argumenten und der Möglichkeit, die Argumente zu benennen, die wir an unsere Funktionen senden. Auf diese Weise können Sie unseren Programmen viel mehr Leistung verleihen, indem Sie diese Arten von Funktionen integrieren und die Einfachheit beibehalten, die Lua wir sind daran gewöhnt.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben