Luau globals
*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.
Tóm Tắt
Chức Năng
Ném một lỗi nếu cung cấp value giải quyết thành false hoặc nil .
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.
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.
Trả lại mã được cung cấp như một chức năng có thể thực thi.
Tạo một trống userdata , với lựa chọn cho nó có một cái bảng.
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 .
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ó.
In tất cả các giá trị được cung cấp vào đầu ra.
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.
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.
Đặt giá trị thực của table[index], bỏ qua bất kỳ metamethods nào.
Trả giá trị đã được trả bởi ModuleScript được cung cấp, chạy nó nếu nó chưa được chạy.
Trả lại tất cả các tham số sau chỉ mục đã cho.
Đặt metatable của bảng đã cho.
Trả giá trị được cung cấp chuyển thành số, hoặc nil nếu không thể.
Trả giá trị được cung cấp chuyển thành một chuỗi, hoặc nil nếu không thể.
Trả lại loại cơ bản của đối tượng được cung cấp.
Trả lại tất cả các yếu tố từ danh sách được cho là một tuple.
Tương tự như pcall() ngoại trừ nó sử dụng một xử lý lỗi tùy chỉnh.
Chức Năng
assert
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 * 4assert(product == 360, "Oh dear, multiplication is broken")-- The line above does nothing, because 90 times 4 is 360
Tham Số
Giá trị sẽ được tuyên bố chống lại.
Văn bản sẽ được hiển thị trong lỗi nếu lời khẳng định thất bại.
Lợi Nhuận
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ố
Tin nhắc lỗi để hiển thị.
Cấp độ thông tin nên được in. Mặc định là 1.
Lợi Nhuận
getmetatable
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ố
Vật thể để lấy metatable của.
Lợi Nhuận
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) doprint(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.
loadstring
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() và setfenv() .
Tham Số
Lợi Nhuận
next
Trả về cặp chìa khóa/giá trị đầu tiên trong mảng.Nếu một lastKey argument được đặc trưng thì trả về thành phần tiếp theo trong mảng dựa trên chìa khóa được cung cấp.Thứ tự mà các chỉ mục được liệt kê không được định nghĩa, ngay cả đối với các chỉ mục số.Để lướt qua một bảng theo trật tự số, sử dụng một số cho vòng lặp hoặc ipairs .
Hành vi tiếp theo là không xác định nếu, trong quá trình duyệt, bạn gán bất kỳ giá trị nào cho một trường không tồn tại trong bảng.Tuy nhiên, bạn có thể sửa đổi các trường hiện có.Cụ thể, bạn có thể xóa các trường hiện có.
Tham Số
Các mảng để đi qua.
Chìa khóa cuối cùng đã được lấy từ cuộc gọi tiếp theo trước đó.
Lợi Nhuận
pairs
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) doprint(name .. " has score: " .. score)end
Tham Số
Một bảng array hoặc dictionary để lặp lại.
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ố
Lợi Nhuận
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ố
Bất kỳ số lượng các tham số được xuất.
Lợi Nhuận
rawget
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.
Chỉ mục để lấy từ t.
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.
Chỉ mục để đặt vào t đến một value được chỉ định. Phải khác với nil .
Giá trị được đặt thành một giá trị cụ thể index trong bảng t.
Lợi Nhuận
require
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.Parentrequire(script.Parent.ModuleScript)require("./ModuleScript")-- "../" tương đương với script.Parent.Parentrequire(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 và ../ 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
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 Cprint(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ố
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ề.
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 newMeta là nil, 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.
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
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ỗiprint(assert(tonumber("roblox"))) --> Error: assertion failed
Tham Số
Vật được chuyển đổi thành một số.
Cơ sở số để chuyển đổi arg thành.
Lợi Nhuận
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ố
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 buffer và vector nguyên thủy là các bổ sung từ Luau, không phải từ Lua.
Tham Số
Vật để trả lại loại.
Lợi Nhuận
unpack
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ố
Lợi Nhuận
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ố
Lợi Nhuận
Thuộc Tính
_G
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.