Ich habe lua zu lernen und kann nicht scheinen, eine einfache Implementierung dieser binären Baum Arbeit zu machen ...lua nicht zu ändern Argumente Funktion
function createTree(tree, max)
if max > 0 then
tree = {data = max, left = {}, right = {}}
createTree(tree.left, max - 1)
createTree(tree.right, max - 1)
end
end
function printTree(tree)
if tree then
print(tree.data)
printTree(tree.left)
printTree(tree.right)
end
end
tree = {}
createTree(tree, 3)
printTree(tree)
das Programm nur nil nach der Ausführung. Ich habe im Internet gesucht, um zu verstehen, wie Argumentübergabe in Lua funktioniert (wenn es durch Verweis oder nach Wert ist) und herausgefunden, dass einige Typen durch Verweis (wie Tabellen und Funktionen) übergeben werden, während andere nach Wert übergeben werden. Dennoch habe ich die globale Variable "tree" als Tabelle definiert, bevor ich sie an die "createTree" -Funktion übergeben habe, und ich habe sogar "left" und "right" für denselben Zweck als leere Tabellen innerhalb von "createTree" initialisiert. Was mache ich falsch?
Ihre Antwort war sehr klar und ließ mich meinen Fehler verstehen. Im Grunde war mein Missverständnis, dass "Objekt" Variablen (wie Strings und Tabellen) von REFERENCE übergeben wurden, aber ich verstehe jetzt, dass sie durch Zeiger dargestellt und nach Wert übergeben werden. Dies macht es so, dass eine Funktion Daten ändern kann, auf die sie zeigen, aber nicht die Adresse der Zeiger selbst (wie bei der Übergabe von Zeigern nach Wert an C/C++ - Funktionen, wenn ich richtig verstanden habe). Die anderen Antworten brachten mich dieser Schlussfolgerung nahe, aber es war deine, die alle Zweifel vernichtete. Vielen Dank :) – Dincio