Lua - tablice
Witam w kolejnym rozdziale mojego kursu Lua! Teraz postaram przybliżyć ci idee tablic. Pewnie wiele razy spotkałeś się z tym określeniem i posiadasz w tym temacie chociaż podstawową wiedzę. Zacznę od wizualnego przybliżenia całego zagadnienia. Odpręż się, włącz swoją wyobraźnię. Wyobraź sobie, że na matematyce musisz narysować do zeszytu tabelkę tylko z jedną kolumną i umieścić w niej liczby naturalne od jednego do dziesięciu. Można powiedzieć, że to wszystko odnośnie tablic, ale jednak czas na odrobinę teorii. Tablica sama w sobie jest to zmienna, która przechowuje zmienne. Dla sprostowania wyróżniamy, tak samo jak w przypadku zmiennych tablice globalne i lokalne. Sytuacja jest taka sama jak ze zmiennymi, dlatego chyba tym razem nie muszę jej analizować. Deklaracja tablicy wygląda banalnie:
Kod:
local tbl = {} -- pusta tablica lokalna
tbl2 = {} -- pusta tablica globalna
Umieszczanie danych w tablicy jest bardzo proste, a wygląda to mniej więcej tak:
local tbl = {4,"Hello world.",nil,true}
Problem pojawia się kiedy chcemy zbudować większą tabelę i umieścić w niej więcej danych. Możemy to zrobić w sposób następujący:
local tbl = {
[1] = {},
[2] = {}
}
Jest to przykład rozbudowanej tablicy, w której możemy przechowywać dużo danych, oczywiście tabele można rozbudowywać do większych rozmiarów, ale później stają się już nieczytelne i sam autor kodu może się w nich pogubić. W tym przykładzie cyfry 1 i 2 odpowiadają indeksom tabel. Można je dowolnie zmienić na inną liczbę bądź łańcuch znaków. Tablice te nazywamy asocjacyjnymi. Zapisywać dane w tablicy możemy również tak:
local tbl = {cost = 100, time = 14}
Teraz zajmiemy się wywoływaniem elementów tablicy, co ma swoją użyteczność w kodzie. Wywołanie danej wartości tablicy jest to nic innego jak podanie jej nazwy i jej indeksu. Zademonstrować może to mój krótki kod:
local tbl = {1,2,3,4,5,6,7,8,9,10}
for i = 1, #tbl do
print(tbl[i] * 5.5)
end
Kod pobiera po kolei dane z tablicy według ich położenia i wymnaża je przez 5.5 a następnie ukazuje na ekranie. Indeksem tablicy nie może być nil!Następna rzecz to wprowadzanie danych do tablicy. Na chwilę obecną przedstawię okrojony materiał, gdyż tą funkcję przybliżymy sobie w następnych rozdziałach, ale pokażę jej zastosowanie i funkcjonalność. Spójrz na przykład:
local tbl = {}
for i = 1, 10 do
table.insert(tbl,i)
for i, k in ipairs(tbl) do
print(k)
Aby odwołać się do wartości z tablicy należy wywołać ją po indeksie.
local tbl = {1,2}
local tbl2 = {a = 5}
print(tbl[1],tbl[2])
print(tbl2.a)
Wartości tablicowych możemy używać do praktycznie (lub jak nie) wszystkiego. Możemy je wprowadzać do funkcji, wykonywać na nich działania matematyczne, wyświetlać na ekranie. Mam nadzieję, że w tym rozdziale przekazałem najpotrzebniejsze informacje odnośnie tablic i o niczym nie zapomniałem. Proszę o kontakt ze mną w razie jakiś pytań lub uwag.
Autor: Simon
http://forum.tibia.tv/showthread.php?t=27931
avaster12