Luau globals

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Danh sách sau đây là một danh sách các chức năng và biến cố định của Luau.Các chức năng này có thể được sử dụng trong cài đặt tiêu chuẩn của cả LuauLua 5.1.4, mặc dù có một số khác biệt trong cách một số trong số chúng hoạt động trên Roblox.

Tóm Tắt

Chức Năng

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

    Ném một lỗi nếu cung cấp value giải quyết thành false hoặc nil .

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

    Dừng thực thi luồng và ném một lỗi.

  • Trả về tổng kích thước đối tượng bộ nhớ trong kilobyte.

  • getmetatable(t : Variant):Variant

    Trả về metatable của bảng được cho.

  • Trả về chức năng iterator và bảng để sử dụng trong vòng lặp for.

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

    Trả lại mã được cung cấp như một chức năng có thể thực thi.

  • newproxy(addMetatable : boolean):userdata

    Tạo một trống userdata , với lựa chọn cho nó có một cái bảng.

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

    Một chức năng iterator để sử dụng trong vòng lặp.

  • Trả về chức năng iterator và bảng cung cấp để sử dụng trong một vòng lặp for .

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

    Chạy chức năng được cung cấp và bắt bất kỳ lỗi nào nó ném, trả về thành công của chức năng và kết quả của nó.

  • print(params : Tuple):()

    In tất cả các giá trị được cung cấp vào đầu ra.

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

    Trả về xem liệu v1 có bằng với v2 không, bỏ qua các phương pháp phụ của chúng.

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

    Nhận giá trị thực của table[index], bỏ qua bất kỳ metamethods nào.

  • Trả về chiều dài của chuỗi hoặc bảng, bỏ qua bất kỳ metamethods nào.

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

    Đặt giá trị thực của table[index], bỏ qua bất kỳ metamethods nào.

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

    Trả giá trị đã được trả bởi ModuleScript được cung cấp, chạy nó nếu nó chưa được chạy.

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

    Trả lại tất cả các tham số sau chỉ mục đã cho.

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

    Đặt metatable của bảng đã cho.

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

    Trả giá trị được cung cấp chuyển thành số, hoặc nil nếu không thể.

  • tostring(e : Variant):string

    Trả giá trị được cung cấp chuyển thành một chuỗi, hoặc nil nếu không thể.

  • type(v : Variant):string

    Trả lại loại cơ bản của đối tượng được cung cấp.

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

    Trả lại tất cả các yếu tố từ danh sách được cho là một tuple.

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

    Tương tự như pcall() ngoại trừ nó sử dụng một xử lý lỗi tùy chỉnh.

Thuộc Tính

  • Một bảng được chia sẻ giữa tất cả các kịch bản cùng cấp độ ngữ cảnh.

  • Một biến toàn cầu chứa một chuỗi chứa phiên bản trình biên dịch hiện tại.

Chức Năng

assert

Variant

Ném lỗi nếu value được cung cấp là false hoặc nil. Nếu lời khẳng định thông qua, nó trả lại tất cả các giá trị được truyền cho nó.


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

Tham Số

value: Variant

Giá trị sẽ được tuyên bố chống lại.

errorMessage: string

Văn bản sẽ được hiển thị trong lỗi nếu lời khẳng định thất bại.

Giá Trị Mặc Định: assertion failed!

Lợi Nhuận

Variant

error

()

Kết thúc chức năng bảo vệ cuối cùng được gọi và xuất ra message như một thông tin nhắnlỗi.Nếu chức năng chứa lỗi không được gọi trong chức năng bảo vệ như pcall(), thì kịch bản gọi chức năng sẽ đình chỉ.Chức năng lỗi chính không bao giờ trở lại và hành động giống như lỗi kịch bản.

Argumen level định cách để lấy vị trí lỗi.Với cấp độ 1 (mặc định), vị trí lỗi là nơi chức năng lỗi được gọi.Cấp 2 chỉ ra lỗi đến nơi chức năng gọi lỗi được gọi; và như vậy.Vượt qua cấp độ 0 tránh thêm thông tin vị trí lỗi vào tin nhắn.

Tham Số

message: Variant

Tin nhắc lỗi để hiển thị.

level: number

Cấp độ thông tin nên được in. Mặc định là 1.

Giá Trị Mặc Định: 1

Lợi Nhuận

()

gcinfo

Trả về tổng kích thước đối tượng bộ nhớ trong kilobyte.Con số phản ánh lượng tiêu thụ heap hiện tại từ quan điểm của hệ điều hành, dao động theo thời gian khi thu thập rác giải phóng các đối tượng.

Lợi Nhuận

getmetatable

Variant

Trả về metatable của bảng được cho t nếu có, nếu không có thì trả về nil .Nếu t có một bảng biểu tượng, và phương pháp __metatable được cài đặt, nó trả lại giá trị đó thay vào đó.


-- Hiển thị getmetatable:
local meta = {}
local t = setmetatable({}, meta)
print(getmetatable(t) == meta) --> thật
-- Làm cho metatable gốc không thể khôi phục bằng cách thiết lập __metatable metamethod:
meta.__metatable = "protected"
print(getmetatable(t)) --> protected

Tham Số

t: Variant

Vật thể để lấy metatable của.

Lợi Nhuận

Variant

ipairs

Trả về ba giá trị: chức năng iterator, bảng t và số 0 .Mỗi khi chức năng iterator được gọi, nó trả về cặp giá trị chỉ số tiếp theo trong bảng.Khi được sử dụng trong một vòng lặp chung, các giá trị trả về có thể được sử dụng để lặp qua mỗi chỉ số số trong bảng:


local fruits = {"apples", "oranges", "kiwi"}
for index, fruit in ipairs(fruits) do
print(index, fruit) --> 1 quả táo, 2 quả cam, 3 quả kiwi, etc...
end

Tham Số

Một bảng mà các thành phần của nó phải được lặp lại.

Lợi Nhuận

loadstring

Variant

Tải mã Luau từ một chuỗi và trả lại nó như một chức năng.

Không giống như Lua tiêu chuẩn 5.1, Luau của Roblox không thể tải bytecode biên dịch bằng cách sử dụng loadstring() .

loadstring() bị vô hiệu hóa mặc định. Đối với hướng dẫn xung quanh việc bật nó, xem ServerScriptService .

CẢNH BÁO: Phương pháp này vô hiệu hóa một số sự tối ưu hóa Luau trên chức năng trả về.Cảnh báo cực đoan nên được thực hiện khi sử dụng loadstring() ; nếu ý định của bạn là cho phép người dùng chạy mã trong trải nghiệm của bạn, hãy chắc chắn bảo vệ môi trường của chức năng trả lại bằng cách sử dụng getfenv()setfenv() .

Tham Số

contents: string

Chuỗi được chỉ định để được tải như mã Luau.

chunkname: string

Một tên mảnh bắt buộc cho các thông điệp lỗi và thông tin gỡ lỗi. Nếu không được xác định, Luau sử dụng chuỗi contents.

Lợi Nhuận

Variant

newproxy

Tạo một trống userdata , với lựa chọn cho nó có một cái bảng.

Tham Số

addMetatable: boolean
Giá Trị Mặc Định: false

Lợi Nhuận

Trả về chức năng iterator, bảng truyền được chuyển đến t , và nil , để xây dựng sẽ lặp lại tất cả các cặp chìa khóa / giá trị của bảng đó khi sử dụng trong vòng lặp chung for :


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

Tham Số

Một bảng array hoặc dictionary để lặp lại.

Lợi Nhuận

pcall

Gọi chức năng func với các tham số được cung cấp trong chế độ bảo vệ.Điều này có nghĩa là bất kỳ lỗi nào bên trong func không được lan truyền; thay vào đó, pcall() bắt lỗi và trả một mã trạng thái.Kết quả đầu tiên là mã trạng thái (một boolean), có đúng nếu cuộc gọi thành công mà không có lỗi.Trong trường hợp như vậy, pcall() cũng trả lại tất cả kết quả từ cuộc gọi, sau kết quả đầu tiên này.Trong trường hợp có bất kỳ lỗi nào, pcall() trả về false cộng với thông tin nhắnlỗi.

Tham Số

func: function

Chức năng được gọi trong chế độ bảo vệ.

args: Tuple

Các tham số để gửi đến func khi thực thi.

Lợi Nhuận

Variant

print

()

Nhận bất kỳ số lượng argument nào, và in các giá trị của chúng vào output. print không dành cho xuất định dạng, nhưng chỉ là một cách nhanh để hiển thị một giá trị, thường là để gỡ lỗi.Đối với một đầu ra được định dạng, sử dụng string.format() .Trên Roblox, print không gọi tostring , nhưng phương pháp gọi lạ __tostring vẫn bắt lửa nếu bảng có một.

Tham Số

params: Tuple

Bất kỳ số lượng các tham số được xuất.

Lợi Nhuận

()

rawequal

Kiểm tra xem v1 có bằng với v2 không, mà không gọi bất kỳ metamethods nào.

Tham Số

v1: Variant

Biến đầu tiên để so sánh.

v2: Variant

Biến thứ hai để so sánh.

Lợi Nhuận

rawget

Variant

Nhận giá trị thực của table[index] , mà không gọi bất kỳ metamethods nào.

Tham Số

Bảng được tham chiếu.

index: Variant

Chỉ mục để lấy từ t.

Lợi Nhuận

Variant

rawlen

Trả về chiều dài của chuỗi hoặc bảng, mà không gọi bất kỳ metamethods nào.

Tham Số

Bảng được tham chiếu.

Lợi Nhuận

rawset

Đặt giá trị thực của table[index] đến một value đã cho, mà không gọi bất kỳ metamethod nào.

Tham Số

Bảng được tham chiếu.

index: Variant

Chỉ mục để đặt vào t đến một value được chỉ định. Phải khác với nil .

value: Variant

Giá trị được đặt thành một giá trị cụ thể index trong bảng t.

Lợi Nhuận

require

Variant

Chạy các ModuleScript được cung cấp và trả lại những gì ModuleScript đã trả lại (thường là một bảng hoặc một chức năng).Nếu ModuleScript chưa được chạy, nó sẽ được thực hiện.

Nếu một con đường chuỗi được cung cấp thay thế, nó đầu tiên được giải quyết thành một ModuleScript tương quan với kịch bản đã gọi require() , mô phỏng ngữ nghĩa giống như Unix của biểu hiệu Luau's require() .Ví dụ, mỗi cặp require() biểu hiện trong ví dụ dưới đây chứa hai cuộc gọi tương đương chức năng.


-- "./" tương đương với script.Parent
require(script.Parent.ModuleScript)
require("./ModuleScript")
-- "../" tương đương với script.Parent.Parent
require(script.Parent.Parent.ModuleScript)
require("../ModuleScript")

Cụ thể, semantics giải quyết của require-by-string là như sau:

  • Các đường dẫn chuỗi phải bắt đầu với ./ hoặc ../, nơi ./ tương đương với script.Parent../ tương đương với script.Parent.Parent .
  • Nếu con đường giải quyết chỉ vào một Instance không phải là ModuleScript , require() sẽ cố tìm một ModuleScript có tên là Init hoặc init có cha mẹ là Instance và sử dụng nó thay thế nếu nó tồn tại.
  • Nếu ModuleScript mong muốn không có mặt tại thời điểm require() được gọi, cuộc gọi sẽ thất bại và ném lỗi.Nói cách khác, require-by-string là không chặn: nó không tự động chờ đợi một ModuleScript được tạo.

Một khi đối tượng trả lại được tạo bởi một cuộc gọi ban đầu require() của một ModuleScript , các cuộc gọi tương lai require() cho cùng một ModuleScript (ở cùng một bên của ranh giới khách-máy chủ) sẽ không thực hiện lại mã.Thay vào đó, một tham chiếu đến đối tượng trả về tương tự của đối tượng được tạo bởi cuộc gọi ban đầu sẽ được cung cấp.Hành vi này cho phép chia sẻ các giá trị trên các kịch bản khác nhau, vì nhiều cuộc gọi require() từ các kịch bản khác nhau sẽ tham chiếu cùng một đối tượng trả về.Nếu đối tượng trả về là một bảng, bất kỳ giá trị nào được lưu trong bảng đều được chia sẻ và truy cập bởi bất kỳ kịch bản nào yêu cầu ModuleScript .

Như đã lưu ý ở trên, hành vi "chia sẻ đối tượng" không vượt qua ranh giới client-server.Điều này có nghĩa là nếu một có thể truy cập vào cả máy khách và máy chủ (như bằng cách được đặt trong ) và được gọi từ cả một cũng như một , mã trong sẽ được chạy hai lần, và sẽ nhận được một đối tượng trả lời riêng biệt từ cái nhận được bởi máy .

Hãy lưu ý rằng nếu ModuleScript người dùng muốn chạy đã được tải lên Roblox (với tên của ví dụ / trường hợplà MainModule ), nó có thể được tải bằng cách sử dụng chức năng require() trên ID tài sản của ModuleScript , mặc dù chỉ trên máy chủ.

Tham Số

Các ModuleScript sẽ được thực hiện để lấy lại giá trị trả về mà nó cung cấp, hoặc một tham chiếu đến một (một con đường chuỗi hoặc ID tài sản).

Lợi Nhuận

Variant

Những gì đã trả về ModuleScript (thường là một bảng hoặc một chức năng).

select

Trả lại tất cả các tham số sau số tham số index. Nếu âm tính, nó sẽ trả lại từ cuối danh sách tham số.


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

Nếu tham số index được đặt thành "#" , số lượng tham số đã được truyền sau khi nó được trả về.


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

Tham Số

index: Variant

Chỉ mục của tham số để trả lại tất cả các tham số sau trong args .Nếu nó được đặt thành "#" , số lượng các tham số được truyền sau khi nó được trả về.

args: Tuple

Một tuple của các tham số.

Lợi Nhuận

setmetatable

Đặt metatable cho bảng đã cho t đến newMeta.Nếu newMetanil, metatable của t bị xóa.Cuối cùng, chức năng này trả về bảng t mà nó đã nhận được.Nếu t đã có một bảng biểu diễn có __metatable metamethod được cài đặt, gọi lần này trên t sẽ gây ra một lỗi.


local meta = {__metatable = "protected"}
local t = {}
setmetatable(t, meta) -- Điều này thiết lập metatable của t
-- Bây giờ chúng ta có một bảng, t, với một metatable. Nếu chúng ta cố gắng thay đổi nó...
setmetatable(t, {}) --> Error: cannot change a protected metatable

Tham Số

Bảng để đặt metatable của.

newMeta: Variant

Nếu nil , metatable của bảng được cung cấp t bị xóa. Nếu không, metatable để thiết lập cho bảng được cung cấp t .

Lợi Nhuận

tonumber

Variant

Các nỗ lực chuyển arg thành một số với một cơ sở được định để giải thích giá trị bên trong.Nếu không thể chuyển đổi, chức năng này trả về nil .

Cơ sở có thể là bất kỳ số tự nhiên nào từ 2 đến 36, bao gồm cả.Trong các cơ sở trên 10, chữ cái 'A' (trong trường hợp trên hoặc dưới) đại diện cho 10, chữ 'B' đại diện cho 11, và như vậy, với 'Z' đại diện cho 35.Trong cơ sở 10 (mặc định), số có thể có một phần thập phân, cũng như một phần số nhân bắt buộc.Trong các cơ sở khác, chỉ có các số không có dấu được chấp nhận.

Nếu một chuỗi bắt đầu với 0x và một cơ sở không được cung cấp, 0x được cắt bỏ và cơ sở được cho là 16 hoặc hexadecimal.


print(tonumber("1337")) --> 1337 (cho rằng cơ sở 10, số thập phân)
print(tonumber("1.25")) --> 1.25 (cơ sở 10 có thể có phần số thập phân)
print(tonumber("3e2")) --> 300 (cơ sở 10 có thể có phần số nhân, 3 × 10 ^ 2)
print(tonumber("25", 8)) --> 21 (cơ sở 8, octal)
print(tonumber("0x100")) --> 256 (cho rằng cơ sở 16, hexadecimal)
print(tonumber("roblox")) --> nil (không gây ra lỗi)
-- Lời khuyên: sử dụng với Assert nếu bạn muốn số không thể chuyển đổi gây ra một lỗi
print(assert(tonumber("roblox"))) --> Error: assertion failed

Tham Số

arg: Variant

Vật được chuyển đổi thành một số.

base: number

Cơ sở số để chuyển đổi arg thành.

Giá Trị Mặc Định: 10

Lợi Nhuận

Variant

tostring

Nhận một tham số của bất kỳ loại nào và chuyển nó thành một chuỗi trong định dạng hợp lý.Để kiểm soát hoàn toàn cách chuyển đổi số, hãy sử dụng string.format.Nếu metatable của e có một __tostring metamethod, thì nó sẽ được gọi với e như là duy nhất argument và sẽ trả về kết quả.


local isRobloxCool = true
-- Chuyển boolean thành một chuỗi rồi ghép lại:
print("Roblox is cool: " .. tostring(isRobloxCool)) --> Roblox is cool: true

Tham Số

e: Variant

Vật được chuyển đổi thành một chuỗi.

Lợi Nhuận

type

Trả lại loại của duy nhất của nó argument, được mã hóa thành một chuỗi.Các kết quả có thể của chức năng này là "nil" (một chuỗi, không phải là giá trị nil), "number" , "string" , "boolean" , "table" , "vector" , "function" , "thread" , "userdata" , và "buffer" .Các đối tượng buffervector nguyên thủy là các bổ sung từ Luau, không phải từ Lua.

Tham Số

v: Variant

Vật để trả lại loại.

Lợi Nhuận

unpack

Variant

Trả về các thành phần từ bảng được cho.Mặc định, i là 1 và j là chiều dài của list , được định nghĩa bởi operator chiều dài.

Tham Số

list: table

Danh sách các thành phần cần được bung ra.

Chỉ mục của thành phần đầu tiên để giải nén.

Giá Trị Mặc Định: 1

Chỉ mục của yếu tố cuối cùng để giải nén.

Giá Trị Mặc Định: #list

Lợi Nhuận

Variant

xpcall

Chức năng này tương tự như pcall(), ngoại trừ việc bạn có thể đặt một điều khiển lỗi mới.

xpcall() gọi chức năng f trong chế độ bảo vệ, sử dụng err làm xử lý lỗi, và truyền một danh sách các tham số.Bất kỳ lỗi nào bên trong f không được lan truyền; thay vào đó, xpcall() bắt lỗi, gọi chức năng err với đối tượng lỗi ban đầu và trả mã trạng thái.Kết quả đầu tiên là mã trạng thái (một boolean), có đúng nếu cuộc gọi thành công mà không có lỗi.Trong trường hợp này, xpcall() cũng trả lại tất cả kết quả từ cuộc gọi, sau kết quả đầu tiên này.Trong trường hợp có bất kỳ lỗi nào, xpcall() trả về false cộng với kết quả từ err.

Không giống như pcall() , chức năng err bảo tồn dấu vết chồng của chức năng f , có thể được kiểm tra bằng cách sử dụng debug.info() hoặc debug.traceback() .

Tham Số

Chức năng được gọi trong chế độ bảo vệ.

Chức năng được sử dụng như một xử lý lỗi nếu xpcall phát hiện lỗi.

args: Tuple

Lợi Nhuận

Variant

Thuộc Tính

Một bảng được chia sẻ giữa tất cả các kịch bản cùng cấp độ ngữ cảnh.

_VERSION

Một biến toàn cầu (không phải là chức năng) chứa một chuỗi chứa phiên bản trình biên dịch hiện tại.