W cz??ci pi?tej ju? poradnik?w postaram si? jak najlepiej opisa? dzia?anie wszystkich p?tli w lua.
for
P?tla for jest najcz??ciej stosowan? przez nas w lua p?tl?. Za pomoc? p?tli mo?emy pobra? co? z tabeli, p?tla zwraca nam zazwyczaj klucz oraz warto?? z tej tabeli.
Przyk?adowo
taki kod zwr?ci nam wynik w postaci
S?owa key oraz value to kolejno klucz oraz warto??, jest to zwyk?a zmienna wi?c zamiast key,value mo?emy da? sobie cyferka,wynik jak chcemy. Musimy te? zwr?ci? uwag? na s?owo po operatorze przynale?no?ci in, czyli w tym przypadku "ipairs", jest to wa?ne, poniewa? ipairs iteruje tylko po kluczach, kt?re s? kolejnymi liczbami naturalnymi, klucze w tym przypadku to te cyfry w nawiasach kwadratowych, wi?cej o cz??ci z tabelami/tablicami. W przypadku takiej tabeli:
nasza p?tla przerwie dzia?anie, poniewa? jak wida? klucze nie s? ju? liczbami naturalnymi tylko s?owami/ci?gami znak?w (stringami), w takim wypadku trzeba u?y? nie ipairs a pairs, gdy? pairs iteruje po wszystkim czyli i po liczbach i po stringach po ka?dych kluczach. Nasz kod z tak? tabel? musi wygl?da? tak:
tutaj s?owa key,value r?wnie? nie s? konieczne bo mog? by? jakiekolwiek. Taki kod zwr?ci nam nast?puj?cy wynik
P?tla for ko?czy si? s?owem "do" i ka?da p?tla for ma swojego end'a. P?tl? mo?emy te? pobra? tylko klucz z tabeli.
taki kod zwr?ci nam
W przypadku takiej tabeli:
Kluczem b?dzie ilo?? indeks?w tabeli, w tym przypadku 2 bo s? dwa indeksy/rekordy. Czym jest index itd. dowiecie si? w cz??ci z tabelami/tablicami.
Wszystkie te powy?sze p?tle/przyk?ady stosuje si? najcze?ciej w przypadku tabel. Jest jeszcze jedna metoda p?tli for, jest to p?tla wykonuj?ca si? ilo?? razy w zmiennej.
W przypadku takiej p?tli to zmienna zazwyczaj jest liter? 'i' aczkolwiek to bez znaczenia. Przyk?adowo
wynikiem takiego kodu b?dzie
P?tla wykona si? od 0 do 5 razy.
Ka?da p?tla wykonuje si? ile? razy, w zale?no?ci od p?tli. Przyk?adowo
w przypadku takiego kodu p?tla wykona si? dwa razy, poniewa? wykona si? ona tyle razy ile jest wszystkich indeks?w w tabeli, dla jasno?ci indeks/index w tabeli to w tym przypadku. P?tla wykonuje si? tyle ile jest indeks?w danej tabeli, wyj?tkiem jest p?tla for gdzie podajemy sami warto?? od , kt?rej p?tla ma zacz?? i warto?? na kt?rej p?tla ma si? sko?czy?. Mo?emy tak?e zrobi? tak
wtedy p?tla wykona si? od 1 do wielko?ci tabeli, czyli do tylu razy ile jest indeks?w w niej ( w tym przypadku 2). Z pomoc? takiej p?tli te? mo?emy wyci?gn?? klucz oraz warto?? z tabeli, tyczy si? to ju? bardziej tabel ale poka?? skromny przyk?ad.
Taki kod zwr?ci nam
Po prostu podajemy warto?? z p?tli jako numer indeksu tabeli. Jest r?wnie? jeszcze trzeci argument p?tli numerycznej. Odpowiada on za przeskok warto?ci, czyli
taki kod nie zwr?ci nam liczb od 1 do 10 kolejno, tylko
Je?li p?tla ma wykonywa? si? w d?? czyli ujemnie to trzeci argument nale?y po prostu poda? jako liczb? ujemn?.
taki kod zwr?ci nam:
Takie zastosowanie
nie zadzia?a.
My?l?, ?e z p?tli for to by?oby chyba na tyle.
while
P?tla while jest rzadziej u?ywana ale jest spotykana r?wnie?. P?tla while dzia?a jak powtarzaj?cy si? warunek, czyli dzia?a na zasadzie warunku if. Prosty przyk?ad
Taki kod wykona nam p?tle, kt?ra ma za zadanie do zmiennej liczba dodawa? po 1 przez ca?y czas, gdy zmienna liczba jest mniejsza ni? 5, wynikiem takiego kodu b?dzie
Jak mo?na zauwa?y?, ostatni? liczb? jest 4, poniewa? jest to ostatnia liczba mniejsza od 5. P?tla while dzia?a jak warunek if. Zamiast np
mo?na zrobi? tak
do momentu gdy s jest mniejsze od 11 czyli nie jest wi?ksze od 10 to jest dodawana jedna warto??. Wynikiem b?dzie
Czyli przyk?adowo mo?emy zrobi? w zasobie pod mta zamiast
mo?na zrobi? tak
Z p?tli while te? ju? raczej na tyle.
repeat until
P?tle repeat until czyli p?tla powt?rzeniowa jest chyba najrzadziej u?ywan? p?tl? w lua (przynajmniej pod mta). P?tla repeat until wykonuje si? jak samo s?owo until oznacza "a?" a repeat "powt?rz" czyli powtarza si? tak d?ugo a? co?. Przyk?adowo
taki kod powt?rzy si? tyle razy a? z b?dzie wi?ksze od 5. Wynik b?dzie z b?dzie r?wne 6 wi?c b?dzie wi?ksze od 5 i p?tla zako?czy swoje dzia?anie. Mo?emy te? u?y? p?tli powt?rzeniowej z operatorem not.
"a? nie" czyli a? z nie b?dzie mniejsze od 5 to dodaje nam 1 do z Czyli wynik:
. Jest to jedyna p?tla, kt?ra nie potrzebuje swojego end'a oraz s?owa "do".
Funkcja dotycz?ca p?tli
Istnieje jeszcze co? takiego jak funkcja, niszcz?ca/przerywaj?ca dzia?anie p?tli.
taka p?tla nie dojdzie do 5, czyli nie wykona si? 5 razy tylko 3, poniewa? mamy warunek, ?e je?li p?tla wykona?a si? 3 razy to j? przerywamy. Czyli wynikiem nie b?dzie
tylko
To wszystko o funkcji break.
Funkcja print nie jest funkcj? mta ani nie jest funkcj? dotycz?c? p?tel., dzia?a ona w mta i wy?wietla ona rezultat w debuggerze (/debugscript 0-3)
BarteQ03, Funkcja print w lua wy?wietla rezultat na ekranie czyli jak outputChatBox w mta, tyle tylko, ?e funkcja print w MTA nie dzia?a jak outputChatBox tylko jak
W p?tli for: "for i = wartosc start, wartosc end do" nie wspomnia?e? o jednej wa?nej rzeczy, mianowicie, testowa?em co? takiego jak:
for i = 10, 1 do
print(i)
end
na lua.org oraz w MTA i kompilator nie wiedzia? co zrobi?.
Ta rzecz o kt?rej mianowicie zapomnia?es to 3 argument takiej p?tli, kt?ry sygnalizuje warto?? przeskoku :
Podpis
Jedyny kontakt ze mną to PW forum
local noobs = getElementsByTitle("player", "Programista LUA")
for k, v in ipairs(noobs) do
outputChatBox("Bez mózgu jest użytkownik o nicku: "..getPlayerName(v), root)
destroyElement(v)
end
Jurandovsky, Rzeczywi?cie, dzi?ki za popraw? i uzupe?nienie wiadomo?ci.
Szydlo, Przeszkadzaj? ci moje poradniki? Nie wiem, staram t?umaczy? si? bardziej podstawy ale na pewno jeszcze troch? cz??ci b?dzie. Czy kiedy? sko?cz? kursy? No wiadomo nic wiecznie nie trwa, tematy si? w ko?cu wyczerpi? i kiedy? ten ostatni poradnik/kurs si? pojawi jako ju? ostatnia cz??? ale to daleka przysz?o??
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach