Mit Tabellen Kann man mehrere variablen in einer Speichern. Das funktioniert so, dass jede Variable in einer Tabelle eine art Adresse hat. Das kann eine Zahl, aber auch ein Wort oder nur ein Buchstabe sein. Eine Tabelle kann sogar Variablen von verschiedenen Typen gleichzeitig beinhalten.
Eine Tabelle muss im gegensatz zu anderen Variablen erstmal erstellt werden. Mann kann die tabelle direkt beim erstellen, aber auch nachher "füllen". der Code zum alleinigen erstellen einer tabelle sieht z.b. so aus:
a={}
Jetzt kennt das Programm eine Tabelle mit dem namen a, welche aber noch keinen Inhalt hat. Wenn ich die Tabelle direkt beim erstellen "befüllen" will, schreibe ich das z.b. so:
a={x=10, y=20, name="Franz", bild=Image.load("bg.jpg"), farbe=Color.new(255,255,255,255)}
Nun kennt die tabelle die Variablen x,y,name,bild und farbe. Um Jetzt eine der Variablen abzufragen schreibt man den namen der Tabelle, dann einen Punkt und dann den namen der abzufragenden Variable in der Tabelle. Wenn man jetzt z.b. den String (=den Text) der unter dem namen name in der tabelle a abgespeichert ist in der Farbe die unter dem namen farbe in der tabelle steht anzeigen will, dann macht man das so:
screen:print(10,10,a.name,a.farbe)
screen:flip()
Das würde dan auf dem Display (in weiss) erscheinen:
Franz
man kann auch variablen aus der tabelle in andere variablen speichern. z.b. so:
hintergrundbild=a.bild
Wenn man die Tabelle nach dem erstellen befüllen (oder ändern) möchte, geht das genau umgekehrt, z.b. so:
a.name="Heinz"
Jetzt kommen wir zur Dritten art der befüllung einer Tabelle und damit zum interesanntesten Teil. Wie am Anfang schon gesagt, kann die Adresse in einer Tabelle auch eine Zahl sein, nur dann funktioniert das "befüllen" und "abfragen" etwas anders. statt namen der Tabelle, dann einen Punkt und dann den namen schreibt man den Namen der Tabelle, den eine Eckige Klammer auf, dann die Zahl (die adresse) und dann eine eckige klammer zu. Wichtig ist, dass aucuh hier die Tabelle vorher erstellt werden muss, undzwar in diesem fall mit a={}
a={}
a[1]=42
a[2]=17
a[3]=56
a[4]="Test-Text"
a[5]=Color.new(0,0,0,255)
So hätte ma die Adressen 1-5 gefüllt. Wenn man jetzt z.b. den inhalt der Adresse 3 mit der Farbe, welche in der Adresse 5 abgespeichert ist aneigen will, macht man das so:
screen:print(10,10,a[3],a[5])
screen.flip()
Das würde dan auf dem Display (in schwarz) erscheinen:
56
Wenn man nun z.b. die Zahlen 1 bis 50 in eine Tabelle schreiben will, könnte man das z.b. so:
a={}
i=1
while i<=50 do
a[i]=i
i=i+1
end
und wenn man sowas auf dem Display untereinander anzeigen lassen wollte, kann man das z.b. so:
a={}
i=1
while i<=50 do
a[i]=i
i=i+1
end
-------nun ist die tabelle gefüllt und wird jetzt auf ähnliche weise wieder ausgegeben.
weiss=Color.new(255,255,255,255)
i=1
while i<=50 do
screen:print(10,i*10,a[i],weiss)
i=i+1
end
So, Jetzt wisst ihr wie man tabellen erstellt, befüllt und abfragt. Hier kommt jetzt noch eine Zusammenfassung und eine Liste der wichtigsten Befehle, die mit Tabellen zu tun haben.
Zusammenfassung:
Tabelle erstellen: a={}
Tabelle befüllen: a={x=1, y=50}
oder a.x=1
oder a[1]=1
Tabelle abfragen variable=a.x
oder variable=a[1]
Die Wichtigsten Befehle:
table.concat (tabelle , zwischentext , ab wann , bis wo)
--verbindet die Werte einer tabelle.
table.foreach (tabelle, funktion)
--geht alle Felder einer table durch und übergibt sie ggf an eine Funktion.
table.getn (tabelle)
--gibt die Anzhal der Felder einer Tabelle zurück
table.sort (tabelle , funktion)
--sortiert eine table. Ist keine Funktion gegeben wird nach groesser/kleiner Prinzip sortiert.
table.insert (tabelle, position, wert)
--fügt ein Feld in eine vorhandene table ein.
table.remove (tabelle , position)
--loescht ein Feld einer table
table.setn (tabelle, felderanzahl)
--gibt die Anzahl der Felder einer Tabelle vor.
Wo man Tabellen verwenden kann:
Tabellen kann man z.b. bei der darstellung eines menüs gebrauchen. anstatt jeden menüpunkt eineln zu programmieren, muss man nur noch die Tabelle füllen und abfragen. Aber auch Textdateien kann man z.b. Zeile für Zeile in eine Tabelle Speichern und dann ausgeben. Für die die zufällig mein Homebrew AX kennen, bei allen Downloadlisten, bei den Newslisten, der darstellung von Textdateien und dem anzeigen von News hab ich Tabellen benutzt. Ohne sie wäre der quelltext mindestens 10 mal so lang.
1.KOPIEREN NICHT ERLAUBT
2.FRAGEN ABER GERNE