Krautkanal.com

Veröffentlicht am 2014-11-02 15:32:45 in /prog/

/prog/ 5976: zu Hülf! Ich mache gerade meine ersten Schritte m...

madebyvadim Avatar
madebyvadim:#5976

zu Hülf!
Ich mache gerade meine ersten Schritte mit Lua und hab eine bisschen abstraktarere Frage, auf die ich im Zwischnnetz keine Antwort finde.

Wie baue ich mein Programm auf, vorallem im hinblick auf die Tableverwaltung. Ich hab bislang mit Java und C++ programmiert und dort ist der Aubau in der Hinsicht klar, dass ich z.b. eine Klasse "PKW" von der einer Klasse "Fahrzeug" ableite, die Variabeln private/protected speicher und per Funktionen änder oder ausgebe.
Wie mache ich das am geschicktesten mit Lua? Angenommen ich habe 3 Luaskripte, und die ersten beiden erzeugen und verändern Tables, wie greife ich mit dem dritten Skript auf diese Tables zu?
Gibt es eine Möglichkeit direkt an die einzelnen Schlüssel zu kommen oder muss ich eigens dafür Funktionen schreiben?
Wenn ja, bietet es sich dann nicht an einfach alle Tables in einer Datei zu erzeugen?

zl;ng:Geschickte Tableverwaltung in Lua, wie?

jamesmbickerton Avatar
jamesmbickerton:#5979

$ lua
Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio
> t = {herp= "derp"}
> = t.herp
derp
> t.herp = "twerp"
> = t.herp
twerp
> for key,value in pairs(t) do print(key,value) end
durr hurr
herp twerp


http://lua-users.org/wiki/TablesTutorial
Dieser Faden ist direktes Indiz dafür dass man den Novizen erst Programmieren beibringen sollte und dann erst OOP. Ist ja schlimm.

ultragex Avatar
ultragex:#5980

Danke, aber wie man Tables erzeugt und Werte in Schlüssel schreibt ist mir bekannt.

Was ist wenn herp und derp in Script1.lua erzeugt werden, ich aber in Script2.lua auf t.herp zugreifen will?

kinday Avatar
kinday:#5983

>>5980
Magst du den Tisch in eine Datei serialisieren um ohne Script1 auszuführen darauf zugreifen zu können? Siehe [0].

Magst du in Script2 Script1 ausführen und dir den Tisch übergeben lassen bzw. in deinem Namensplatz erzeugen? Siehe 'dofile' oder 'loadfile' auf [1], bzw. ergurgle dir wie du ein richtiges Modul schreibst.

Magst du zwischen Script1 und Script2 zur Laufzeit Daten austauschen? Benutze [2].

Ansonsten erschließt sich mir nicht wirklich was du eigentlich machen willst, stelle deine Frage bitte genauer.

[0] http://lua-users.org/wiki/TableSerialization
[1] http://www.lua.org/manual/5.2/manual.html
[2] http://w3.impa.br/~diego/software/luasocket/

kershmallow Avatar
kershmallow:#5984

>>5983
> Magst du in Script2 Script1 ausführen und dir den Tisch übergeben lassen bzw. in deinem Namensplatz erzeugen? Siehe 'dofile' oder 'loadfile' auf [1], bzw. ergurgle dir wie du ein richtiges Modul schreibst.
Dies. Script2 soll Tables erzeugen und verwalten, ich möchte aber Script2 in Script1 ausführen, dort aber an alle Daten aus Script1 zugreifen können.
Werde mir mal die pfostieren Elfenjungen durchlesen.

polarity Avatar
polarity:#5987

>>5984
> Script2 in Script1 ausführen, dort aber an alle Daten aus Script1 zugreifen können.
$ cat script1.lua
script2 = require "script2"
[...]
script2.foo(daten)

Neuste Fäden in diesem Brett: