Luau globals

Pokaż przestarzałe

*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.

Następująca lista to lista funkcji i zmiennych, które są native dla Luau.Funkcje te można używać w standardowej instalacji obu Luau i Lua 5.1.4, choć istnieją pewne różnice w tym, jak niektóre z nich działają na Roblox.

Podsumowanie

Funkcje

  • assert(value : Variant,errorMessage : string):Variant

    Rzuca błąd, jeśli dostarczone value rozwiązuje się do false lub nil.

  • error(message : Variant,level : number):()

    Zatrzymuje wykonanie wątku i wyświetla błąd.

  • Zwraca całkowitą rozmiar stosu pamięci w kilobajtach.

  • getmetatable(t : Variant):Variant

    Zwraca metatable danego stołu.

  • Zwraca funkcję iteratora i tabelę do użycia w pętlu for.

  • loadstring(contents : string,chunkname : string):Variant

    Zwraca dostarczony kod jako funkcję, którą można wykonać.

  • newproxy(addMetatable : boolean):userdata

    Tworzy pustą userdata, z opcją, aby miała metatabelę.

  • next(t : table,lastKey : Variant):Variant,Variant

    Funkcja iteratora do użycia w pętlach.

  • Zwraca funkcję iteratora i dostarczoną tabelę do użycia w pętlu for.

  • pcall(func : function,args : Tuple):boolean,Variant

    Wykonuje dostarczoną funkcję i łapie każdy błąd, który wyrzuca, zwracając powodzenie funkcji i jej wyniki.

  • print(params : Tuple):()

    Wydrukuje wszystkie podane wartości do wyjścia.

  • rawequal(v1 : Variant,v2 : Variant):boolean

    Zwraca, czy v1 jest równy v2, pomijając ich metody dodatkowe.

  • rawget(t : table,index : Variant):Variant

    Otrzymuje rzeczywistą wartość table[index], pomijając jakiekolwiek metody pośrednie.

  • Zwraca długość ciągu lub tabeli, pomijając wszelkie metody pośrednie.

  • rawset(t : table,index : Variant,value : Variant):table

    Ustawia rzeczywistą wartość table[index], pomijając jakiekolwiek metody pośrednie.

  • require(module : ModuleScript | string | number):Variant

    Zwraca wartość, która została zwrócona przez podany ModuleScript, uruchamiając go, jeśli jeszcze nie został uruchomiony.

  • select(index : Variant,args : Tuple):Tuple

    Zwraca wszystkie argumenty po podanym indeksie.

  • setmetatable(t : table,newMeta : Variant):table

    Ustawia metatable danego stołu.

  • tonumber(arg : Variant,base : number):Variant

    Zwraca podany wartość przekształconą na liczbę lub nil jeśli jest to niemożliwe.

  • tostring(e : Variant):string

    Zwraca podany wartość przekształconą na ciąglub nil jeśli jest to niemożliwe.

  • type(v : Variant):string

    Zwraca podstawowy typ dostarczonego obiektu.

  • unpack(list : table,i : number,j : number):Variant

    Zwraca wszystkie elementy z listy podanej jako tuple.

  • xpcall(f : function,err : function,args : Tuple):boolean,Variant

    Podobnie do pcall() z wyjątkiem tego, że używa niestandardowego obsługiwacza błędów.

Właściwości

  • Tabela, która jest współdzielona między wszystkie skrypty o tym samym poziomie kontekstu.

  • Globalna zmienna, która zawiera ciąg zawierający obecną wersję kompilatora.

Funkcje

assert

Variant

Rzuca błąd, jeśli dostarczone value jest false lub nil. Jeśli twierdzenie przejdzie, zwraca wszystkie wartości przekazane mu.


local product = 90 * 4
assert(product == 360, "Oh dear, multiplication is broken")
-- The line above does nothing, because 90 times 4 is 360

Parametry

value: Variant

Wartość, przeciw której będzie twierdzona.

errorMessage: string

Tekst, który zostanie wyświetlony w błędzie, jeśli twierdzenie nie powiedzie się.

Wartość domyślna: assertion failed!

Zwroty

Variant

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

message: Variant

Komunikat o błędzie do wyświetlenia.

level: number

Poziom informacji, które powinny być wydrukowane. Domyślnie 1.

Wartość domyślna: 1

Zwroty

()

gcinfo

Zwraca całkowitą rozmiar stosu pamięci w kilobajtach.Liczba odzwierciedla obecne zużycie stosu z perspektywy systemu operacyjnego, które waha się w czasie, gdy zbieracz śmieci uwalnia obiekty.

Zwroty

getmetatable

Variant

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

t: Variant

Obiekt, aby pobrać metatable.

Zwroty

Variant

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) do
print(index, fruit) --> 1 jabłka, 2 pomarańcze, 3 kiwi itd...
end

Parametry

Tabela, której elementy mają być powtarzane.

loadstring

Variant

Ł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

contents: string

Wskazany ciąg, który ma być wczytany jako kod Luau.

chunkname: string

Opcjonalna nazwa kawałka dla wiadomości o błędach i informacji o debugowaniu. Jeśli nie zostanie określona, Luau używa ciągcontents.

Zwroty

Variant

newproxy

Tworzy pustą userdata, z opcją, aby miała metatabelę.

Parametry

addMetatable: boolean
Wartość domyślna: false

Zwroty

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) do
print(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

func: function

Funkcja, która ma być wywołana w trybie chronionym.

args: Tuple

Argumenty do wysłania do func podczas wykonywania.

Zwroty

Variant

print

()

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

params: Tuple

Dowolna liczba argumentów do wyświetlenia.

Zwroty

()

rawequal

Sprawdza, czy v1 jest równy v2, bez wzywania żadnych metod pośrednich.

Parametry

v1: Variant

Pierwsza zmienna do porównania.

v2: Variant

Druga zmienna do porównania.

Zwroty

rawget

Variant

Otrzymuje rzeczywistą wartość table[index], bez wzywania żadnych metod pośrednich.

Parametry

Tabela, do której należy się odnieść.

index: Variant

Indeks, aby uzyskać z t.

Zwroty

Variant

rawlen

Zwraca długość ciągu lub tabeli bez wzywania żadnych metod pośrednich.

Parametry

Tabela, do której należy się odnieść.

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ść.

index: Variant

Indeks do ustawienia w t do określonego value . Musi być inny niż nil .

value: Variant

Wartość, która ma zostać ustawiona na określone index w tabeli t.

Zwroty

require

Variant

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.Parent
require(script.Parent.ModuleScript)
require("./ModuleScript")
-- "../" jest równoznaczne z script.Parent.Parent
require(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

Variant

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 C
print(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

index: Variant

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.

args: Tuple

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.

newMeta: Variant

Jeśli nil, metatable danego stołu t jest usuwany. W przeciwnym razie metatable do ustawienia dla danego stołu t .

Zwroty

tonumber

Variant

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łąd
print(assert(tonumber("roblox"))) --> Error: assertion failed

Parametry

arg: Variant

Obiekt, który ma zostać zamieniony na liczbę.

base: number

Podstawa liczbowa do przekształcenia arg w.

Wartość domyślna: 10

Zwroty

Variant

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

e: Variant

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

v: Variant

Obiekt, który ma zwrócić typ.

Zwroty

unpack

Variant

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

list: table

Lista elementów do rozpakowania.

Indeks pierwszego elementu do rozpakowania.

Wartość domyślna: 1

Indeks ostatniego elementu do rozpakowania.

Wartość domyślna: #list

Zwroty

Variant

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

Funkcja, która ma być wywołana w trybie chronionym.

Funkcja, która będzie używana jako ręcznik błędu, jeśli xpcall złapie błąd.

args: Tuple

Zwroty

Variant

Właściwości

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.