概要
职能
如果提供的 value 解析为 false 或 nil,将抛出错误。
停止线程执行并抛出错误。
返回总计内存堆尺寸以千字节。
返回给定表的可表达式。
返回迭代器函数和表,用于在 for 循环中使用。
返回提供的代码作为可以执行的函数。
创建一个空白 userdata , 带有可选选项让它有一个可表示的表。
用于循环的迭代器函数。
返回迭代器函数和提供的表,用于 for 循环中使用。
运行提供的函数,并捕获它投掷的任何错误,返回函数的成功和其结果。
将所有提供的值打印到输出。
返回 whether v1 是否等于 v2 , 通过其超级方法忽略它们。
获取 table[index] 的真实值,无视任何超级方法。
返回字符串或表的长度,无视任何超级方法。
设置 table[index] 的真实值,无视任何超级方法。
返回由给定的模块脚本返回的值,如果尚未运行,则运行它。
返回给定索引后的所有参数。
设置给定表的可访问表。
返回提供的值转换为数字,或 nil 如果不可能。
返回提供的值转换为字符串,或 nil 如果不可能。
返回提供的对象的基本类型。
返回给定列表中的所有元组素为 tuple。
与 pcall() 类似,但使用了自定义错误处理器。
职能
assert
如果提供的 value 是 false 或 nil,将抛出错误。如果声明通过,它将返回所有传给它的值。
local product = 90 * 4assert(product == 360, "Oh dear, multiplication is broken")-- The line above does nothing, because 90 times 4 is 360
参数
将对抗的值。
如果主张失败,将在错误中显示的文本。
返回
error
终止最后一个被保护的函数调用并输出 message 作为错误信息。如果包含错误的函数没有被调用到保护函数,例如 pcall() ,那么调用该函数的脚本将终止。错误函数本身永远不会返回并像脚本错误一样行动。
level 参数指定如何获取错误位置。使用等级 1 (默认值),错误位置是错误函数被调用的地方。等级 2 将错误指向错误调用的函数所在位置;以及如此。通过等级 0 避免将错误位置信息添加到消息中。
参数
要显示的错误消息。
应打印的信息级别。默认为 1。
返回
getmetatable
返回指定表的 metatable t 如果它有一个,否则返回 nil .如果 t 有一个可转换表,且 __metatable 的 metamethod 被设置,它会返回这个值而不是它。
-- 展示 getmetatable:local meta = {}local t = setmetatable({}, meta)print(getmetatable(t) == meta) --> 真实-- 通过设置 __metatable 元方法来使原始可恢复不可恢复:meta.__metatable = "protected"print(getmetatable(t)) --> protected
参数
用于获取表单的对象。
返回
loadstring
从字符串加载 Luau 代码,并将其返回为函数。
与标准 Lua 5.1 不同,Roblox 的 Luau 无法使用 loadstring() 加载编译的 bytecode。
loadstring() 默认被禁用。要启用它的指导,请参阅 ServerScriptService 。
警告: 这个方法会禁用返回函数上的某些 Luau 优化。在使用 loadstring() 时,应采取极其谨慎的措施;如果你的意图是允许用户在你的体验中运行代码,请确保使用 getfenv() 和 setfenv() 来保护返回的函数的环境。
返回
next
返回阵数组中的第一个键/值对。如果指定了 lastKey 参数,则根据提供的键返回阵列中的下一个元素。索引列表的顺序不需要指定,即使是数字索引。要按数字顺序浏览表,请使用数字循环或 ipairs 。
如果在遍历期间将任何值分配到表中不存在的字段,下一个行为将被定义为未定义,如果在遍历期间将任何值分配到表中不存在的字段,下一个行为将被定义为未定义,然而,你可以修改现有的字段。特别是,您可以清除现有字段。
参数
要遍历的阵列。
以前从下一个调用中恢复的最后一个键。
返回
接收任何数量的参数,并将其值打印到输出。print 不适用于格式化输出,但仅作为快速显示值的方法,通常用于调试。对于格式化输出,请使用 string.format() 。在 Roblox 上,print 不调用 tostring ,但如果表有一个,__tostring 的 metamethod 仍会发射。
参数
要输出的任何数量的参数。
返回
require
运行提供的 ModuleScript 并返回 ModuleScript 返回的内容 (通常是表或函数)。如果 ModuleScript 尚未运行,它将被执行。
如果提供了一个字符串路径,它首先解决为与调用 ModuleScript 脚本相关的 require() ,模仿 Luau 的 require() 语句的 Unix 语义。例如,下面的每对 require() 表达式包含两个功能相等的调用。
-- “.“与 脚本cript.Parent 相等require(script.Parent.ModuleScript)require("./ModuleScript")-- ../" 等于 脚本cript.Parent.Parentrequire(script.Parent.Parent.ModuleScript)require("../ModuleScript")
具体来说,需要通过字符串的解析语义如下:
- 字符串路径必须以 ./ 或 ../ 开始,其中 ./ 与 script.Parent 相等,而 ../ 与 script.Parent.Parent 相等。
- 如果解决的路径指向一个 这不是一个 , 将尝试找到一个名为 或 的父辈,如果存在,并使用它,如果存在。
一旦返回对象由 初始 require() 调用的 ModuleScript ,将来的 require() 调用相同的 ModuleScript (在客户端服务器边界相同的一侧)将不再运行代码。相反,将提供初始 调用创建的同样 返回对象的参考。这种行为允许在不同脚本之间共享值,因为多个require()调用不同脚本的多个调用将引用相同的返回对象。如果返回的对象是表,表中存储的任何值都会被共享并由任何需要 ModuleScript 的脚本访问。
如上所述,“对象共享”行为不会跨越客户端-服务器边界。这意味着如果 可以访问客户端 和服务器 (例如被放置在 )以及 从两个 中调用 代码,那么在 中运行的代码将被运行两次,而 将从收到的返回对象中收到不同的返回对象。
请注意,如果用户想要运行的 ModuleScript 已上传到 Roblox(其实例名称为 MainModule ),那么只能使用 require() 函数在资产 ID 的 ModuleScript 上加载,但仅限于服务器。
参数
将被执行来检索它提供的返回值的 ModuleScript,或指向一个(字符串路径或资产ID)的引用。
返回
返回了什么 ModuleScript(通常是一个表或一个函数)。
setmetatable
将给定的表 t 设置为 newMeta 。如果 newMeta 是 nil,那么 t 的可转换表将被移除。最后,这个函数返回了传给它的表 t 。如果 已经有一个具有 已设置的 metamethod 的 metatable,调用此操作会发生错误。
local meta = {__metatable = "protected"}local t = {}setmetatable(t, meta) -- 这设置了 t 的可表达式-- 我们现在有一个表,t,带有一个可变表。如果我们尝试更改它...setmetatable(t, {}) --> Error: cannot change a protected metatable
参数
设置目标表的表。
如果 nil ,给定表的 metatable t 将被删除。否则,metatable 用于设置给定表 t 。
返回
tonumber
尝试将 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 转换为数字的基础。
返回
tostring
接收任何类型的参数,并将其转换为合理格式的字符串。要完全控制数字转换的方式,请使用 string.format。如果 e 的 metatable 有一个 __tostring metamethod,那么它将以 e 为唯一参数被调用,并返回结果。
local isRobloxCool = true-- 将 boolean 转换为字符串然后 concatenate:print("Roblox is cool: " .. tostring(isRobloxCool)) --> Roblox is cool: true
参数
要转换为字符串的对象。
返回
xpcall
这个函数与 pcall() 相似,除了你可以设置一个新的错误处理器。
xpcall() 调用函数 f 在保护模式下,使用 err 作为错误处理器,并传递一个列表的参数。内部的任何错误 f 不会传播;相反,xpcall() 捕获错误,调用 err 函数与原始错误对象,并返回状态代验证码。其第一个结果是状态代码(一个 boolean),如果调用成功且没有错误,它将为真。在这种情况下,xpcall() 也返回调用后的所有结果,在这个第一个结果之后。在任何错误情况下,xpcall()返回false plus结果从err。
与 pcall() 不同,err 函数保留函数 f 的堆栈跟踪,可以使用 debug.info() 或 debug.traceback() 进行检查。
返回
属性
_G
一个表,它被分享到同一等级别上下文的所有脚本。
_VERSION
一个全球变量(不是函数),包含包含当前编译器版本的字符串。