Luau globals
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Podsumowanie
Funkcje
Rzuca błąd, jeśli dostarczone value rozwiązuje się do false lub nil.
Zatrzymuje wykonanie wątku i wyświetla błąd.
Zwraca całkowitą rozmiar stosu pamięci w kilobajtach.
Zwraca metatable danego stołu.
Zwraca funkcję iteratora i tabelę do użycia w pętlu for.
Zwraca dostarczony kod jako funkcję, którą można wykonać.
Tworzy pustą userdata, z opcją, aby miała metatabelę.
Funkcja iteratora do użycia w pętlach.
Zwraca funkcję iteratora i dostarczoną tabelę do użycia w pętlu for.
Wykonuje dostarczoną funkcję i łapie każdy błąd, który wyrzuca, zwracając powodzenie funkcji i jej wyniki.
Wydrukuje wszystkie podane wartości do wyjścia.
Zwraca, czy v1 jest równy v2, pomijając ich metody dodatkowe.
Otrzymuje rzeczywistą wartość table[index], pomijając jakiekolwiek metody pośrednie.
Zwraca długość ciągu lub tabeli, pomijając wszelkie metody pośrednie.
Ustawia rzeczywistą wartość table[index], pomijając jakiekolwiek metody pośrednie.
Zwraca wartość, która została zwrócona przez podany ModuleScript, uruchamiając go, jeśli jeszcze nie został uruchomiony.
Zwraca wszystkie argumenty po podanym indeksie.
Ustawia metatable danego stołu.
Zwraca podany wartość przekształconą na liczbę lub nil jeśli jest to niemożliwe.
Zwraca podany wartość przekształconą na ciąglub nil jeśli jest to niemożliwe.
Zwraca podstawowy typ dostarczonego obiektu.
Zwraca wszystkie elementy z listy podanej jako tuple.
Podobnie do pcall() z wyjątkiem tego, że używa niestandardowego obsługiwacza błędów.
Funkcje
assert
Rzuca błąd, jeśli dostarczone value jest false lub nil. Jeśli twierdzenie przejdzie, zwraca wszystkie wartości przekazane mu.
local product = 90 * 4assert(product == 360, "Oh dear, multiplication is broken")-- The line above does nothing, because 90 times 4 is 360
Parametry
Wartość, przeciw której będzie twierdzona.
Tekst, który zostanie wyświetlony w błędzie, jeśli twierdzenie nie powiedzie się.
Zwroty
error
Zakończa ostatnią chronioną funkcję nazywaną i wyświetla message jako wiadomośćo błędzie.Jeśli funkcja zawierająca błąd nie jest wywoływana w chronionej funkcji, takiej jak pcall(), to skrypt, który ją wywołał, zostanie trwale blokować.Sama funkcja błędu nigdy nie powraca i działa jak błąd skryptu.
Argument level określa sposób uzyskania pozycji błędu.Z poziomem 1 (domyślnym), pozycja błędu jest tam, gdzie została wezwana funkcja błędu.Punkt poziomu 2 wskazuje błąd na to, gdzie wezwano funkcję, która wywołała błąd; i tak dalej.Przekazanie poziomu 0 unika dodawania informacji o pozycji błędu do wiadomość.
Parametry
Komunikat o błędzie do wyświetlenia.
Poziom informacji, które powinny być wydrukowane. Domyślnie 1.
Zwroty
getmetatable
Zwraca metatable danego stołu t, jeśli ma jeden, w przeciwnym razie zwraca nil .Jeśli t ma metabelę i metoda __metatable jest ustawiać, zwraca tę wartość zamiast.
-- Pokaż getmetatable:local meta = {}local t = setmetatable({}, meta)print(getmetatable(t) == meta) --> prawda-- Spraw, aby oryginalny metatable był nie do odzyskania, ustawiając metodę __metatable:meta.__metatable = "protected"print(getmetatable(t)) --> protected
Parametry
Obiekt, aby pobrać metatable.
Zwroty
ipairs
Zwraca trzy wartości: funkcję iteratora, tabelę t i liczbę 0.Za każdym razem, gdy funkcja iteratora jest wywoływana, zwraca kolejną liczbową parę wartości indeksu w tabeli.Gdy jest używany w ogólnym cyklu for, wartości zwrotowe mogą być używane do iterowania nad każdym indeksem liczbowym w tabeli:
local fruits = {"apples", "oranges", "kiwi"}for index, fruit in ipairs(fruits) doprint(index, fruit) --> 1 jabłka, 2 pomarańcze, 3 kiwi itd...end
Parametry
Tabela, której elementy mają być powtarzane.
loadstring
Ładowuje kod Luau z ciągu i zwraca go jako funkcję.
W przeciwieństwie do standardowego Lua 5.1, Luau Roblox nie może ładować skompilowanego kodu za pomocą loadstring() .
loadstring() jest wyłączone domyślnie. Aby uzyskać wskazówki dotyczące jego włączenia, zobacz ServerScriptService .
OSTRZEŻENIE: Ta metoda wyłącza pewne optymalizacje Luau w powracanej funkcji.Należy zachować ekstremalną ostrożność podczas korzystania z loadstring() ; jeśli zamierza się umożliwić użytkownikom uruchamianie kodu w swoim doświadczeniu, upewnij się, że chronisz środowisko zwróconej funkcji za pomocą getfenv() i setfenv() .
Parametry
Zwroty
next
Zwraca pierwszą parę klucz/wartość w arrayu.Jeśli argument lastKey został określony, zwraca następny element w matrycy na podstawie klucza, który został podany.Nie określa się kolejności, w której indeksy są wymieniane, nawet dla indeksów liczbowych.Aby przemierzyć tabelę w kolejności numerycznej, użyj cyklu liczbowego lub ipairs.
Zachowanie następnego jest niedefiniowane, jeśli podczas przeglądu przypiszesz jakąkolwiek wartość do niewystępującego pola w tabeli.Możesz jednak modyfikować istniejące pola.W szczególności możesz wyczyścić istniejące pola.
Parametry
Zbiór, który ma być przetwarzany.
Ostatni klucz, który został wcześniej odzyskany z wezwania do następnego.
Zwroty
pairs
Zwraca funkcję iteratora, przekazany stół t i nil, tak że konstrukcja będzie iterować nad wszystkimi parami klucz/wartości z tego stołu podczas użycia ogólnego pętla for :
local scores = {["John"] = 5,["Sally"] = 10}for name, score in pairs(scores) doprint(name .. " has score: " .. score)end
Parametry
Tabela wierszy lub słownik, nad którą można powtarzać.
pcall
Wezwuje funkcję func z danymi argumentami w trybie chronionym.Oznacza to, że żaden błąd wewnątrz func nie jest rozprzestrzeniany; zamiast tego pcall() łapie błąd i zwraca kod stanu.Pierwszym wynikiem jest kod statusu ( boolean ), który jest prawdziwy, jeśli wezwanie zakończy się bez błędów.W takim przypadku pcall() również zwraca wszystkie wyniki z wezwania, po tym pierwszym wyniku.W przypadku wystąpienia błędu pcall() zwraca fałsz plus wiadomośćo błędzie.
Parametry
Zwroty
Odbiera dowolną liczbę argumentów i drukuje ich wartości do wyjścia.print nie jest przeznaczony do formatowanego wyświetlania, ale tylko jako szybki sposób na pokazanie wartości, zwykle do debugowania.Dla formatowanego wyjścia użyj string.format().Na Roblox, print nie dzwoni do tostring, ale metoda __tostring nadal się uruchamia, jeśli stół ma jedną.
Parametry
Dowolna liczba argumentów do wyświetlenia.
Zwroty
rawget
Otrzymuje rzeczywistą wartość table[index], bez wzywania żadnych metod pośrednich.
Parametry
Tabela, do której należy się odnieść.
Indeks, aby uzyskać z t.
Zwroty
rawset
Ustawia rzeczywistą wartość table[index] na daną value, bez wzywania żadnej metody pośredniej.
Parametry
Tabela, do której należy się odnieść.
Indeks do ustawienia w t do określonego value . Musi być inny niż nil .
Wartość, która ma zostać ustawiona na określone index w tabeli t.
Zwroty
require
Wykonuje dostarczone ModuleScript i zwraca to, co otrzymał ModuleScript (zwykle tabelę lub funkcję).Jeśli ModuleScript nie został jeszcze uruchomiony, zostanie wykonany.
Jeśli zamiast tego zostanie podany ścieżka ciągu, najpierw zostanie rozwiązany względem skryptu, który wezwał , naśladując semantykę podobną do Unix Luau's wyrażenia.Na przykład każda para require() wyrażeń w poniższym przykładzie zawiera dwa funkcjonalnie równoważne wezwania.
-- "./" jest równoznaczne z script.Parentrequire(script.Parent.ModuleScript)require("./ModuleScript")-- "../" jest równoznaczne z script.Parent.Parentrequire(script.Parent.Parent.ModuleScript)require("../ModuleScript")
W szczególności semantyka rozwiązywania przez strunę require jest następująca:
- Ścieżki ciągów muszą zaczynać się od ./ lub ../, gdzie ./ jest równoznaczne z script.Parent i ../ jest równoznaczne z script.Parent.Parent.
- Jeśli rozwiązany ścieżek wskazuje na Instance nie jest to ModuleScript , require() będzie próbował znaleźć ModuleScript o nazwie Init lub init powiązany z tym Instance i użyje go zamiast, jeśli istnieje.
- Jeśli pożądany ModuleScript nie jest obecny w momencie, gdy jest wzywany require(), wezwanie nie powiedzie się i zostanie wywołany błąd.Innymi słowy, require-by-string jest niewblokujący: nie oczekuje domyślnie na utworzenie ModuleScript .
Po utworzeniu obiektu zwrotowego przez wezwanie początkowe z , przyszłe wezwania do tego samego (po tej samej stronie granicy klienta-serwera) nie uruchomią ponownie kodu.Zamiast tego zostanie podany odniesienie do obiektu zwrotnego tego samego , który został utworzony przez początkowe wezwanie require().Zachowanie to umożliwia udostępnianie wartości między różnymi skryptami, ponieważ wiele wezwań require() z różnych skryptów odniesie się do tego samego zwróconego obiektu.Jeśli zwrócony obiekt jest tablicą, wszystkie wartości przechowywane w tablicy są udostępniane i dostępne dla każdego skryptu wymagającego, że ModuleScript .
Jak wspomniano powyżej, zachowanie "udzielania obiektów" nie przekracza granicy klient-serwer.Oznacza to, że jeśli ModuleScript jest dostępny zarówno dla klienta jak i serwera (na przykład poprzez umieszczenie go w ReplicatedStorage ), a require() jest wywoływany zarówno z LocalScript jak i z Script, kod w ModuleScript zostanie wykonany dwa razy, a LocalScript otrzyma odrębny obiekt zwrotu od tego, który otrzymał z Script.
Zauważ też, że jeśli ModuleScript użytkownik chce uruchomić, zostało przesłane do Roblox (z nazwą instancji jako MainModule ), może zostać załadowane za pomocą funkcji require() na ID zasobu ModuleScript, choć tylko na serwerze.
Parametry
The ModuleScript które zostanie wykonane, aby odzyskać wartość zwrotną, którą dostarcza, lub odniesienie do jednego (ścieżki struny lub ID zasobu).
Zwroty
Co zwrócono ModuleScript (zwykle tabelę lub funkcję).
select
Zwraca wszystkie argumenty po numerze argumentu index. Jeśli jest ujemny, powróci z końca listy argumentów.
print(select(2, "A", "B", "C")) --> B Cprint(select(-1, "A", "B", "C")) --> C
Jeśli argument index jest ustawiony na "#", liczba argumentów, które zostały przekazane po jego powrocie.
print(select("#", "A", "B", "C")) --> 3
Parametry
Indeks argumentu do zwrócenia wszystkich argumentów po args .Jeśli jest ustawiony na "#", liczba argumentów, które zostały przekazane po jego powrocie.
Tupla argumentów.
Zwroty
setmetatable
Ustawia metatable dla podanego stołu t na newMeta.Jeśli newMeta jest nil, metabela t zostaje usunięta.Wreszcie, ta funkcja zwraca tabelę t, która została jej przekazana.Jeśli ma już metatabelę, której metoda została ustawiać, wezwanie tego powoduje błąd.
local meta = {__metatable = "protected"}local t = {}setmetatable(t, meta) -- To ustawia metatable t-- Mamy teraz tabelę, t, z metatablicą. Jeśli spróbujemy ją zmienić...setmetatable(t, {}) --> Error: cannot change a protected metatable
Parametry
Tabela do ustawienia metatabeli.
Jeśli nil, metatable danego stołu t jest usuwany. W przeciwnym razie metatable do ustawienia dla danego stołu t .
Zwroty
tonumber
Próby przekonwersowania arg na liczbę z określoną podstawą do interpretacji wartości.Jeśli nie może zostać przekonwertowane, ta funkcja zwraca nil .
Bazą może być każda liczba całkowita pomiędzy 2 a 36, włącznie.W bazach powyżej 10 litera 'A' (w dużej lub małej literze) reprezentuje 10, litera 'B' reprezentuje 11, a tak dalej, z literą 'Z' reprezentującą 35.W podstawie 10 (domyślnie) liczba może mieć część dziesiętną, a także opcjonalną część wykładniczą.W innych bazach akceptowane są tylko niepodpisane liczby całkowite.
Jeśli ciąg zaczyna się od 0x i nie jest dostarczana baza, 0x jest obcinany, a baza jest domniemana jako 16 lub szesnastkowy.
print(tonumber("1337")) --> 1337 (domniemuje bazę 10, dziesiętną)print(tonumber("1.25")) --> 1.25 (baza 10 może mieć dziesiętne części)print(tonumber("3e2")) --> 300 (baza 10 może mieć część ekspozycji, 3 × 10 ^ 2)print(tonumber("25", 8)) --> 21 (baza 8, ośmiobitowa)print(tonumber("0x100")) --> 256 (domniemuje bazę 16, szesnastkową)print(tonumber("roblox")) --> nil (nie wywołuje błędu)-- Wskazówka: użyj z ASSERT, jeśli chcesz, aby nieprzetwarzalne liczby wywoływały błądprint(assert(tonumber("roblox"))) --> Error: assertion failed
Parametry
Obiekt, który ma zostać zamieniony na liczbę.
Podstawa liczbowa do przekształcenia arg w.
Zwroty
tostring
Otrzymuje argument dowolnego typu i konwertuje go na strunę w rozsądnym formacie.Aby uzyskać pełną kontrolę nad tym, jak liczby są konwertowane, użyj ciąg.format.Jeśli metatable e ma metodę __tostring, to zostanie ona wywołana z e jako jedynym argumentem i zwróci wynik.
local isRobloxCool = true-- Konwertuj boolean na strunę, a następnie połącz:print("Roblox is cool: " .. tostring(isRobloxCool)) --> Roblox is cool: true
Parametry
Obiekt, który ma zostać zamieniony na ciąg.
Zwroty
type
Zwraca typ swojego jedynego argumentu, kodowany jako ciąg znaków.Możliwe wyniki tej funkcji to "nil" (tekst, nie wartość nil), "number" , "string" , "boolean" , "table" , "vector" , "function" , "thread" , "userdata" , i "buffer" .Prymityw buffer jest dodatkiem z Luau, a nie z Lua.
Parametry
Obiekt, który ma zwrócić typ.
Zwroty
unpack
Zwraca elementy z podanego stołu.Domyślnie, i jest 1, a j jest długością list , określoną przez operator długości.
Parametry
Zwroty
xpcall
Funkcja ta jest podobna do pcall(), z wyjątkiem że możesz ustawić nowy obsługujący błąd.
xpcall() wezwuje funkcję f w trybie chronionym, używając err jako obsługi błędów i przekazuje listę argumentów.Wszelkie błędy wewnątrz f nie są rozprzestrzeniane; zamiast tego xpcall() łapie błąd, dzwoni do funkcji err z oryginalnym obiektem błędu i zwraca kod stanu.Pierwszym wynikiem jest kod statusu ( boolean ), który jest prawdziwy, jeśli wezwanie zakończy się bez błędów.W tym przypadku xpcall() również zwraca wszystkie wyniki z połączenia, po tym pierwszym wyniku.W przypadku wystąpienia błędu, xpcall() zwraca fałsz plus wynik z err.
W przeciwieństwie do pcall() funkcja err zachowuje ślad stosu funkcji f, którą można sprawdzić za pomocą debug.info() lub debug.traceback().
Parametry
Zwroty
Właściwości
_G
Tabela, która jest współdzielona między wszystkie skrypty o tym samym poziomie kontekstu.
_VERSION
Globalna zmienna (nie funkcja), która zawiera ciąg zawierający obecną wersję interpretora.