Luau globals

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

以下是 Luau 的原生功能和變數的列表。這些功能可以在標準安裝的 LuauLua 5.1.4 中使用,雖然有一些差異在 Roblox 上的某些功能如何運作。

概要

函式

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

    如果提供的 value 解析為 falsenil,將發出錯誤。

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

    停止執行線程並發出錯誤。

  • 返回總記憶堆尺寸以千位元。

  • getmetatable(t : Variant):Variant

    返回指定表的可表達式。

  • 返回一個迭代器函數和一個表,用於在 for 循環中使用。

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

    返回提供的代碼作為可以執行的函數。

  • newproxy(addMetatable : boolean):userdata

    創建一個空白 userdata , 並為它提供一個可選的 metatable。

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

    用於循環使用的迭代器函數。

  • 返回一個迭代器函數和提供的表,用於在 for 循環中使用。

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

    執行提供的功能,並捕捉任何它投擲的錯誤,返回功能的成功和結果。

  • print(params : Tuple):()

    列印所有提供的值到輸出。

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

    返回是否 v1v2 相等,忽略其超級方法。

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

    獲得 table[index] 的真正值,無視任何額外方法。

  • 返回字串或表的長度,無視任何超級方法。

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

    設置 table[index] 的真值,無視任何額外方法。

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

    返回指定模組腳本所返回的值,如果尚未執行,則執行它。

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

    返回指定索引後的所有參數。

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

    設置指定表的可表達式。

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

    返回提供的值轉換為數字,或 nil 如果不可能。

  • tostring(e : Variant):string

    返回提供的值轉換為字串,或 nil 如果不可能。

  • type(v : Variant):string

    返回提供的對物件的基本類型。

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

    返回指定列表中的所有元組素為 tuple 。

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

    pcall() 相似,但使用自訂錯誤處理器。

屬性

  • 一個表,在相同層等級的所有腳本之間共享。

  • 一個全球變量,包含包含當前解釋器版本的字串。

函式

assert

Variant

如果提供的 valuefalsenil,將發生錯誤。如果檢查通過,它將返回所有傳給它的值。


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

參數

value: Variant

將對抗的值。

errorMessage: string

如果主張失敗,錯誤中會顯示的文字。

預設值:assertion failed!

返回

Variant

error

()

終止最後一個被保護的函數呼叫並輸出 message 作為錯誤訊息。如果包含錯誤的功能沒有在保護函數中呼叫,例如 pcall() ,則呼叫該功能的腳本將永久停權。錯誤功能本身永遠不會返回並作為腳本錯誤行動。

level 參數指定如何獲得錯誤位置。使用等級 1 (預設值),錯誤位置是錯誤函數被呼叫的地方。等級 2 指出錯誤發生在哪裡的功能呼叫了錯誤;等等。傳送等級 0 避免將錯誤位置資訊添加到訊息中。

參數

message: Variant

要顯示的錯誤訊息。

level: number

應印出的資訊等級。默認值為 1。

預設值:1

返回

()

gcinfo

返回總記憶堆尺寸以千位元。數字反映操作系統的堆現在消耗,在垃圾收集器釋放對象時會隨著時間變化。

返回

getmetatable

Variant

如果給定的表有 metatable,則返回其 metatable;否則返回 。如果 t 有一個可轉換的表,且 __metatable 的轉換方法已設設定,則會返回該值。


-- 展示 getmetatable:
local meta = {}
local t = setmetatable({}, meta)
print(getmetatable(t) == meta) --> 真
-- 通過設置 __metatable 元方法來使原始可恢復不可恢復:
meta.__metatable = "protected"
print(getmetatable(t)) --> protected

參數

t: Variant

要擷取表單的對象。

返回

Variant

ipairs

返回三個值:一個迭代器函數、表 t 和數字 0 。每次呼叫迭代器函數時,它會返回表中下一個數字索引值對。當在一般的 for 循環中使用時,返回值可用於在表中循環每個數字索引:


local fruits = {"apples", "oranges", "kiwi"}
for index, fruit in ipairs(fruits) do
print(index, fruit) --> 1 個蘋果、2 個橘子、3 個奇維等等
end

參數

一個包含要循環的元素的表。

loadstring

Variant

從字串載入 Luau 代碼並將其返回為函數。

與標準 Lua 5.1 不同,Roblox 的 Luau 無法使用 loadstring() 載入編譯的 bytecode。

loadstring() 默认被禁用。要啟用它的指引,請參閱 ServerScriptService

警告: 此方法會禁用返回的函數上的某些 Luau 最佳化。在使用 loadstring() 時,應採取極度小心,如果您的意圖是讓用戶在您的體驗中執行代碼,請務必使用 getfenv()setfenv() 來保護返回的函數環境。

參數

contents: string

指定要載入為 Luau 代碼的字串。

chunkname: string

可選擇的錯誤訊息和偵錯資訊的片段名稱。如果未指定,Luau 使用 contents 字串。

返回

Variant

newproxy

創建一個空白 userdata , 並為它提供一個可選的 metatable。

參數

addMetatable: boolean
預設值:false

返回

返回一個迭代器函數、傳遞的表 tnil , 以便建築在使用一般 for 循環時對該表的所有關鍵/值對進行迭代:


local scores = {
["John"] = 5,
["Sally"] = 10
}
for name, score in pairs(scores) do
print(name .. " has score: " .. score)
end

參數

一個要循環的陣列或字典表。

pcall

在保護模式下呼叫函數 func ,使用指定的參數。這意味著任何內部錯誤 func 不會傳播;相反,pcall() 捕捉錯誤並返回狀態碼。其第一個結果是狀態碼 (一個 boolean),如果呼叫成功且沒有錯誤,它就是真實的。在這種情況下,pcall() 也會返回呼叫後的所有結果,在這個第一個結果之後。如果發生任何錯誤,pcall()返回錯誤訊息及假值。

參數

func: function

在保護模式下要呼叫的功能。

args: Tuple

執行時傳送到 func 的參數。

返回

Variant

print

()

接收任何數量的參數,並將其值輸出到輸出。print 不是用於格式化輸出的,但只是一種快速的方法來顯示值,通常是用於調試。對於格式化輸出,請使用 string.format() 。在 Roblox 上, print 不呼叫 tostring ,但 __tostring 的代理方法仍然會發射,如果表有一個。

參數

params: Tuple

要輸出的任何數量的參數。

返回

()

rawequal

檢查 v1 是否等於 v2 , 而不需要呼叫任何額外方法。

參數

v1: Variant

要比較的第一個變量。

v2: Variant

要比較的第二個變量。

返回

rawget

Variant

無需呼叫任何額外方法,獲得 table[index] 的真值。

參數

要參考的表。

index: Variant

t 獲得索引。

返回

Variant

rawlen

返回字串或表的長度,而不需要呼叫任何額外方法。

參數

要參考的表。

返回

rawset

table[index] 的實際值設為給定的 value ,而不會呼叫任何代理方法。

參數

要參考的表。

index: Variant

t 設置指數到指定的 value 。必須與 nil 不同。

value: Variant

值將設為表 index 中指定的 t

返回

require

Variant

執行供應的 ModuleScript 並返回 ModuleScript 返回的內容 (通常是一個表或一個函數)。如果 ModuleScript 尚未執行,它將被執行。

如果提供了字串路徑,則首先解決為與呼叫 ModuleScript 的腳本相關的 require() ,模擬 Luau 的 require() 表達的 Unix 類似語法。例如,下面的每對 require() 表達式包含兩個功能相同的呼叫。


-- "./" 與 指令碼cript.Parent 相等
require(script.Parent.ModuleScript)
require("./ModuleScript")
-- "../" 與 指令碼cript.Parent.Parent 相等
require(script.Parent.Parent.ModuleScript)
require("../ModuleScript")

具體來說,需求通過字串的解析意義如下:

  • 字串路徑必須以 ./../ 開始,其中 ./ 相當於 script.Parent../ 相當於 script.Parent.Parent
  • 如果解決的路徑指向不是 的 , 將嘗試尋找名為 或 的父輩,如果存在,並使用它來取代它,如果存在。
  • 如果所需的 ModuleScriptrequire() 被呼叫時不存在,呼叫將失敗並發出錯誤。換言之,需要-由字串是非阻塞的:它不會默認等待 ModuleScript 被創建。

一旦返回對象由 初始 require()ModuleScript ,將來對同一 require() (在客戶端服務器邊界相同側面)的相同 ModuleScript 呼叫將不再運行代碼。相反,初始 呼叫創建的同樣 返回對象的參考將提供。這種行為允許在不同的腳本之間共享值,因為多個 require() 來自不同腳本的呼叫將引用相同的返回對物件。如果返回的對象是一個表,表中存儲的任何值都會被共享並對任何需要 ModuleScript 的腳本可訪問。

如上所述,「對象共享」行為不會跨越客戶端與伺服器邊界。這意味著如果 可以存取客戶端 和服務器 (例如放置在 )以及 從兩個 中呼叫 ,那麼在 中的代碼將被兩次運行,而 將從收到的兩個 中收到不同的返回對象。

請注意,如果使用者想要執行的 ModuleScript 已上傳到 Roblox (其名稱為 MainModule ),則可以使用 require() 功能在資產 ID 的 ModuleScript 上載,但只能在服務伺服器上。

參數

將被執行來恢復它提供的返回值或一個參考(字串路徑或資產ID)。

返回

Variant

什麼是 ModuleScript 返回的 (通常是一個表或一個函數)。

select

返回所有參數後,在參數數字 index 之後。如果為負值,將從參數列表的末端返回。


print(select(2, "A", "B", "C")) --> B C
print(select(-1, "A", "B", "C")) --> C

如果 index 參數設為 "#",返回後傳送的參數數量。


print(select("#", "A", "B", "C")) --> 3

參數

index: Variant

返回指數的參數,在 args 後返回所有參數。如果設為 "#" ,則返回後傳送的參數數量。

args: Tuple

一個論點的參數。

返回

setmetatable

將 metatable 設置為給定的表 tnewMeta。如果 newMetanil,則 t 的可轉換表被移除。最後,此功能返回傳給它的表 t 。如果 t 已經有一個可轉換的表,其 __metatable 轉換方法已設設定,呼叫此操作在 t 會發生錯誤。


local meta = {__metatable = "protected"}
local t = {}
setmetatable(t, meta) -- 這會設置 t 的可表達式
-- 我們現在有一個表、t,包含一個可變更的元素。如果我們嘗試更改它...
setmetatable(t, {}) --> Error: cannot change a protected metatable

參數

設置目標表的表。

newMeta: Variant

如果 nil , 指定表的 metatable t 將被移除。否則,指定表的 metatable t 將被設為。

返回

tonumber

Variant

嘗試將 arg 轉換為指定基礎的數字以解釋值。如果無法轉換,此功能將返回 nil

基地可以是介於 2 和 36 之間的任何整數,包括在內。在 10 以上的基地中,字母「A」(在上寫或下寫)代表 10、「B」代表 11 等等,「Z」代表 35。在基礎 10 (預設值) 中,數字可能會有十進位部分和可選的指數部分。在其他基礎上,只接受未簽名的整數。

如果字串以 0x 開始,且沒有提供基礎,那麼 0x 將被裁剪,假設基礎是 16 或十六進位。


print(tonumber("1337")) --> 1337 (假設基礎為 10、十進位)
print(tonumber("1.25")) --> 1.25 (基礎 10 可能有十進位部分)
print(tonumber("3e2")) --> 300 (基礎 10 可能有指數部分, 3 × 10 ^ 2)
print(tonumber("25", 8)) --> 21 (基礎 8、八進制)
print(tonumber("0x100")) --> 256(假設基礎為 16 位,十六進位)
print(tonumber("roblox")) --> nil(未發出錯誤)
-- 提示:如果您想將不可轉換的數字轉換為錯誤,請使用Assert
print(assert(tonumber("roblox"))) --> Error: assertion failed

參數

arg: Variant

要轉換為數字的對象。

base: number

arg 轉換為數字基礎。

預設值:10

返回

Variant

tostring

接收任何類型的參數並將其轉換為合理格式的字串。要完全控制數字轉換的方式,請使用 string.format。如果 e 的 metatable 有 __tostring 的 metamethod,則會以 e 為唯一參數來呼叫,並返回結果。


local isRobloxCool = true
-- 將布林轉換為字串,然後連接:
print("Roblox is cool: " .. tostring(isRobloxCool)) --> Roblox is cool: true

參數

e: Variant

要轉換為字串的對象。

返回

type

返回唯一引數的類型,以字串形式編碼。這個功能的可能結果是 "nil" (一個字串,不是值 nil)、"number""string""boolean""table""vector""function""thread""userdata"、和 "buffer"buffervector 原始是從 Luau 添加的,不是從 Lua 添加的。

參數

v: Variant

返回類型的對象。

返回

unpack

Variant

返回指定表的元素。預設情況下,i 是 1 和 jlist 的長度,由長度運算符定義。

參數

list: table

要解包的元素清單。

要解包的第一個元素的指數。

預設值:1

要解包的最後一個元素的指數。

預設值:#list

返回

Variant

xpcall

這個功能與 pcall() 相似,除了你可以設置新的錯誤處理器。

xpcall() 呼叫功能 f 在保護模式下,使用 err 作為錯誤處理器,並傳送一個列表的參數。內部的任何錯誤 f 不會傳播;相反,xpcall() 捕捉錯誤,呼叫 err 函數與原始錯誤對物件,並返回狀態代碼。其第一個結果是狀態碼 (一個 boolean),如果呼叫成功且沒有錯誤,它就是真實的。在這種情況下,xpcall() 也會返回呼叫後的所有結果,在這個第一個結果之後。如果發生任何錯誤,xpcall() 將返回 false 加上來自 err 的結果。

pcall() 不同,err 函數保留功能 f 的堆栈記錄,可以使用 debug.info()debug.traceback() 檢查。

參數

在保護模式下要呼叫的功能。

如果 xpcall 捕捉到錯誤,將使用的功能作為錯誤處理。

args: Tuple

返回

Variant

屬性

一個表,在相同層等級的所有腳本之間共享。

_VERSION

一個全球變量(不是一個函數),包含包含當前解釋器版本的字串。