Funkcje w Lua

Spisie treści
Funkcje są głównym mechanizmem abstrahowania deklaracji i wyrażeń w Lua, mogą wykonywać określone zadania, które w innych językach są najczęściej nazywane procedurami lub podprogramami.
Funkcje najczęściej pisane są z nawiasami i listą argumentów, które pozwolą mu wykonać konkretną akcję, gdzie może być tak, że te funkcje nie potrzebują argumentów, jednak nawiasy muszą być podane, zobaczmy przykład funkcji, których używamy jako wyrażeń wewnątrz Lua:

Jak widać, moglibyśmy używać funkcji na oba opisane sposoby, ale jest szczególny przypadek, w którym funkcja ma pojedynczy argument, a ten argument jest literał ciągu lub konstruktor dla tabeli lub tablicy, w tym przypadku nawiasy są opcjonalne, zobaczmy:
 print "Hello World" print ("Hello World") dofile 'file.lua' dofile ('file.lua') print [[multi-line array msg]] print ([[multi-line array msg]]) f { var1 = 17, var2 = 30} f ({var1 = 17, var2 = 30}) type {} type ({})
Zgodnie z przykładem byliśmy w stanie napisać funkcje na dwa sposoby, te są jednakowo ważne.
Program w Lua Możesz używać funkcji zdefiniowanych zarówno w C, jak i w samym języku, na przykład wszystkie standardowe funkcje w bibliotece Lua są napisane w C, co nie jest istotne dla programistów, ponieważ wywołanie obu nie ma żadnej różnicy.
Wiedząc o tym definicja nie różni się od innych języków, konwencjonalną składnią funkcji rządzi nazwa funkcji, lista parametrów oraz treść funkcji, czyli lista deklaracji, zobaczmy przykład do zilustruj, co wyjaśniono:
 działanie funkcji (zmienna) suma lokalna = 0 suma = zmienna + 6 zwrócona suma koniec
Mamy już naszą funkcję, jednak w ten sposób nie jest ona zbyt użyteczna, ponieważ trzeba ją wywołać, wysyłając wymagany parametr, w tym celu możemy dodać jeszcze jedną linię do naszego kodu, aby ją wywołać:
 operacja funkcji (var) suma lokalna = 0 sum = var + 6 zwróć sumę koniec wydruku (operacja (57))
Jeśli uruchomimy nasz przykład w naszym terminalu, możemy zobaczyć, jak nasz program otrzymuje parametr i zgodnie z operacjami zdefiniowanymi w naszej funkcji zwraca wartość:

POWIĘKSZAĆ

Coś, co możemy wyróżnić z funkcji w Luajest to, że parametry działają jak zmienne lokalne, ponieważ są inicjowane wartościami, które otrzymują w wywołaniu funkcji. Poza tym możemy wywołać funkcję z różną liczbą argumentów zdefiniowanych w funkcji, Lua dostosowuje się do tego w sposób, w jaki ma to miejsce w przypadku wielokrotnego przypisania, tematu, który omówiliśmy w ostatnim samouczku, w którym dodatkowe argumenty są odrzucane, a dodatkowe parametry otrzymują typ wartości zero, na przykład wyobraźmy sobie, że mamy następującą funkcję:
 function funkcja_wielokrotna (a, b) zwraca a lub b koniec
Zobaczmy, jak w poniższej części kodu wywołujemy funkcję z różnymi parametrami i po prawej stronie, jak wykonywane jest przypisanie:
 f (8) a = 8, b = zero f (8, 15) a = 8, b = 15 f (8, 15, 4) a = 8, b = 15 (wartość 4 jest odrzucana)
Chociaż to zachowanie może prowadzić do błędów programistycznych, jest również przydatne, zwłaszcza w przypadku argumentów domyślnych.
Niekonwencjonalna, ale całkiem przydatna funkcja Lua, to możliwość zwrócenia wielu wyników, nawet predefiniowane funkcje językowe mogą to zrobić. Przykładem tego jest funkcja string.znajdź, która szuka wzorca występowania w danym ciągu, funkcja ta zwraca dwa indeksy, pierwszy to indeks, w którym ten wzorzec się zaczyna, a drugi to, gdzie się kończy, zobaczmy praktyczny przykład wykorzystania tej funkcji, którą możemy rób doskonale w naszej interaktywnej konsoli:

Funkcje, w których piszemy Lua mogą też wrócić wiele wyników, do tego musimy je tylko wylistować po naszym powrocie, zobaczmy przykład, w którym tworzymy funkcję lokalizującą największy z listy elementów w tablicy i jego pozycję w niej:
 funkcja maksymalna wartość (a) lokalne minimum = 1 lokalne m = a [minimum] dla i, val w ipairs (a) wykonaj jeśli val> m to minimum = i; m = val koniec koniec powrót m, minimalny koniec wydruku (maksymalna wartość ({8,10,23,12,5}))
Jak widzimy, nasza funkcja jest dość prosta iw naszym zwrocie zwraca dwie wartości, które w tym przypadku zgodnie z tym co wysyłamy powinniśmy zwrócić 23 jako największą liczbę i 3 jako pozycję, zobaczmy:

POWIĘKSZAĆ

Oprócz funkcjonalności zwracania wielu wyników, Lua możesz również otrzymać zmienna liczba argumentów, na przykład w samouczkach używaliśmy funkcji wydrukować z jednym, dwoma i maksymalnie trzema argumentami, czyli może otrzymać zmienną liczbę argumentów, ale jak to się dzieje, to funkcje, w których rozwijamy Lua, Spójrzmy na przykład tego:
 function example_function (…) local s = 0 for i, v in ipairs {…} do s = s + v end return s end print (example_function (8, 19, 30, 14, 10))
Jeśli jesteśmy obserwatorami w definicji naszej funkcji, to mamy trzy punkty (… ) wewnątrz nawiasów oznacza to, że nasza funkcja przyjmuje zmienną liczbę argumentów, a gdy funkcja jest wywoływana, wszystkie przesłane argumenty są zbierane wewnętrznie, a następnie przetwarzane przez funkcję iparyZobaczmy wyjście naszej funkcji, która odpowiada za dodanie wszystkich przesłanych do niej argumentów:

POWIĘKSZAĆ

Jak widzimy tę cechę Lua Jest to dość przydatne, ponieważ pozwala nam zdefiniować naszą funkcję bez wiedzy, ile argumentów do niej przekażemy, możemy nawet powiedzieć, że ta funkcjonalność jest trochę podobna do tego, co robi się z przygotowanych oświadczeń do obsługi operacji z Bazą danych w językach takich jak PHP lub Jawa.
Wysyłanie argumentów w Lua jest pozycyjny, to znaczy, kiedy wywołujemy funkcję, te argumenty odpowiadają parametrom zgodnie z ich pozycjami, pierwszy argument odpowiada pierwszemu parametrowi i tak dalej, chociaż czasami nie zaszkodzi podać argumenty po nazwie.
Funkcjonalność ta jest podobna do zmiennych argumentów, jednak przy definiowaniu nazw dla naszych argumentów obsługa ich jest znacznie prostsza, gdzie tylko za pomocą tabeli lub układu możemy wykonać tę funkcjonalność, co jest bardzo przydatne, jeśli nasza funkcja korzysta z niektórych z tych parametrów opcjonalnie zobaczmy następujące wywołanie funkcji, która otrzymuje określoną ilość parametrów do zbudowania okna:
 create_window {x = 0, y = 0, szerokość = 0, wysokość = 200, tytuł = 'Okno Lua', tło = "niebieski", obramowania = prawda}
W ten sposób funkcja utwórz_okno Możesz sprawdzić te argumenty według nazwy, jeśli chcesz, zobaczmy, jak otrzymujemy te argumenty w naszej funkcji i co możemy z tym zrobić:
 function create_window (options) - zaznacz obowiązkowe opcje if type (options.title) ~ = "string" then error ("brak title") elseif type (options.width) ~ = "number" then error ("brak miary szerokości" ) elseif type (options.height) ~ =" number "then error ("brak pomiaru wysokości") end - stosujemy opcje create_window (options.title, options.x lub 0, options.y lub 0, options .width, options.height, options.background lub "white", options.edges) End
Jak widzimy, możliwości w naszych programach są znacznie większe dzięki tej funkcjonalności i chociaż ten przykład jest ilustracyjny, pozwala nam zobaczyć, jak możemy zastosować nazwane argumenty w naszych funkcjach.
Tak kończymy ten samouczek, w którym nauczyliśmy się obsługiwać funkcje w Lua, przechodząc od konwencjonalnej składni, którą możemy znaleźć w innych językach, do cech języka takich jak wielokrotność wyników, zmienne argumenty oraz możliwość nazywania argumentów, które wysyłamy do naszych funkcji. W ten sposób, dodając znacznie więcej mocy do naszych programów, włączając tego typu funkcje i zachowując prostotę, do której Lua jesteśmy do tego przyzwyczajeni.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave