Geben Sie whever ein lua-parameter sollte eine Kopie oder eine Referenz
Frage ich mich, ob es einen Weg gibt, um anzugeben, ob die Parameter einer lua-Funktion sein sollte kopiert oder nur referenziert. Farbe ist ein Objekt, das eine Farbe.
Beispielsweise mit diesem code
function editColor(col)
col.r = 0
print(tostring(col.r))
end
color = Color(255, 0, 0)
print(tostring(color.r))
editColor(color)
print(tostring(color.r))
Macht die Ausgabe
255
0
0
Also col ist ein "Verweis" auf die Farbe, aber dieser code:
function editColor(col)
col = Color(0, 0, 0)
print(tostring(col.r))
end
color = Color(255, 0, 0)
print(tostring(color.r))
editColor(color)
print(tostring(color.r))
Macht diese Ausgabe
255
0
255
So, hier ist die Farbe kopiert.
Gibt es eine Möglichkeit zu zwingen, einen parameter kopiert werden oder auf die verwiesen wird? Genau wie die &
- operator in C++?
- Dies könnte helfen: stackoverflow.com/questions/640642/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, die Parameter im Lua sind immer übergeben von Wert (Spiegel). Alle Variablen sind Referenzen jedoch. In Ihrem zweiten Beispiel in editColor man das überschreiben, was die variable col bezieht sich auf, aber es ist nur für diesen Bereich. Sie müssen Dinge zu ändern, um, vielleicht, anstatt vorbei in eine variable neu zugewiesen werden, haben die Funktion etwas zurückgeben und haben Ihre Umwidmung außerhalb. Viel Glück.
könnten Sie eine Schließung wie diese
Dies zu tun, was Sie wollen. Setzen Sie die variable, die Sie übergeben möchten, die durch Verweis in eine Tabelle ein. Sie können eine Tabelle verwenden, um passieren etwas durch ref -, nicht nur Strings.
Lua ist eine schlechte Sprache. Leiden, seiner Einfachheit, wenn Sie müssen etwas tun, nur ein wenig komplexer.