
Poradnik zaczerpniety ze strony tibia.net.pl.
1. Ogólnie o LUA.
2. Początek skryptu.
3. Użycie if’ów.
4. Zmienne.
5. Tablice.
Funkcje związane z tablicami.
6. Pętle
a) FOR
b) WHILE
7. Komentarze.
8. Ciekawe funkcje.
Lekcja 5 – Tablice.
Tablice są przydatne jeśli chcemy zapisać większą ilość danych. Dane te zawsze oddzielone są przecinkiem. Zapis danych w tablicy może być następujący:
{1,2,3,4,5,6}
{x=1,y=2,z=3}jest jeszcze inny sposób (mieszany: {a=1, 5, 4, x=1000}), ale nie będę o nim pisał, gdyż jest mało wygodny.
Skoro już wiemy jak wyglądają dane w tablicy to najwyższy czas nauczyć się je zapisywać i pobierać. Zapis wygląda tak:
local tablica = {1,2,3,4,5}Przy sposobie 1. dane z tablicy pobiera się poprzez tablica[index], gdzie tablica to zmienna zawierająca tablicę, a index to pozycja, z której chcemy pobrać dane.
Z kolei w sposobie 2. pobiera się dane przez tablica.index, gdzie index to nazwa zmiennej w tabeli, np. x, y z przykładu.
Dodawać dane do tabeli może trzema sposobami:
1. tabela[index] = wartość (w tabeli {1,2,3})
2. tabela.index = wartość (w tabeli {x=1,y=2})
3. table.insert(tablica, [pozycja,] wartość)Lekcja 5.1 – Funkcje związane z tablicami
a) table.insert(tablica, [pozycja,] wartość)
za pomocą tej funkcji możemy „wstrzyknąć” do tablicy daną wartość, np.
local tablica = {1,2,3,4,5,6,7}
table.insert(tablica, 8)
print(unpack(tablica))Funkcja unpack użyta w przykładzie ‘rozpakowuje’ tablicę. Efektem działania naszego przykładu będzie:
1 2 3 4 5 6 7 8
a teraz inny przykład:
local tablica = {2,3,4,5,6,7}
table.insert(tablica, 1, 9)
print(unpack(tablica))A teraz otrzymamy:
9 2 3 4 5 6 7
gdyż w table.insert() podaliśmy dokładną pozycję, gdzie ma zostać „wstrzyknięta” liczba 9.
b) table.foreach(tablica, funkcja)
Za pomocą tej funkcji możemy po kolei pobrać dane z tabeli i wrzucić je do kolejnej funkcji, np.
local tablica = {1,2,3,4,5,”LOL”}
table.foreach(tablica, print)print jest w tym wypadku użytą przez nas funkcją. Jej parametrami zostaną index oraz wartość z tablicy. Wynikiem działania przykładu będzie:
1 1 2 2 3 3 4 4 5 5 6 LOL
c) table.sort(tablica [, funkcja])
Funkcja ta sortuje nam dane w tablicy, np.
local tablica = {5,9,-1,-99,1,6,87}
table.sort(tablica)
print(unpack(tablica))w rezultacie otrzymamy:
-99 -1 1 5 6 9 87
Jak widać wartości są poustawiane rosnąco, a co jeśli my wolimy malejąco?
local tablica = {5,9,-1,-99,1,6,87}
table.sort(tablica, function(a,b) return a > b end)
print(unpack(tablica))Tym razem otrzymamy wynik przeciwny:
87 9 6 5 1 -1 -99
w podobny sposób możemy napisać inne funkcje, które będą sortowały wartości tak jak sobie tego zażyczymy.
d) table.getn(tablica)
Funkcja ta zlicza ilość danych w tabeli, np.
local tablica = {1,2,3,4,5,6,7,8,9}
print(table.getn(tablica))funkcja ta wyświetli nam:
9
Więc w łatwy sposób możemy sprawdzić ilość danych w tabeli. Ale jest jeszcze prostszy sposób:
local tablica = {1,5,3,8,3,5,7,4}
print(#tablica)Znaczek # sprawia, że jest pobierana ilość danych w tabeli tak jak za pomocą funkcji table.getn(), wynikiem działania przykładu oczywiście będzie liczba 8, bo tyle jest danych.
e) table.remove (table [, pos])
Funkcja ta umożliwia nam kasowanie danych z tablicy. Oto przykład użycia:
local tablica = {x,5,f,2,4,65}
table.remove(tablica)
print(table.getn(tablica))Wynik tego będzie równy 0, gdyż funkcja usunie całą tabelę.
Innym użyciem jest wpisanie pozycji, z której chcemy skasować daną:
local tablica = {1,3,2}
print(table.getn(tablica))
table.remove(tablica, 2) -- Usuniecie liczby 3 z tablicy
print(table.getn(tablica))W tym wypadku otrzymamy:
3
2
f) table.setn(table, value)
Ta funkcja służy jedynie do zmiany maksymalnej wartości tablicy. Funkcja mało przydatna, ale też wymaga opisu
a = {}
print(table.getn(a)) --> 0
table.setn(a, 10000)
print(table.getn(a)) --> 10000g) table.find(table, value)
Jest to funkcja napisana w LUA. Przeszukuje ona tablicę w poszukiwaniu wartości value. Jeśli ją znajdzie to zwróci pozycje, na której ta wartość się znajduje. Np.
a = {1,3,5,7,9}
print(table.find(a, 5)) --> 3W tym przykładzie funkcja zwróci wartość 3, gdyż liczba 5 znajduje się w tabeli na 3 pozycji.
h) table.countElements(table, item)
Jest to funkcja, która zlicza ilość elementów w tablicy. Oczywiście jak można się domyślić. Np.
a = {1,3,1,2,5,8,1,9}
print(table.countElements(a, 1)) --> 3Funkcja ta zliczy wszystkie jedynki w tabeli i wyświetli ich liczbę. W tym przypadku jedynek jest 3 i funkcja wyświetla nam liczbę 3.
Offline