Lua Globals

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

以下是 Lua 的一些函数和变量,它们可以在标准安装的 Lua 5.1.4 中使用。 但是,有一些函数在 Roblox 上使用的方式有些不同。

概要

职能

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

    如果提供的 value 解决为 falsenil ,将发生错误。

  • error(message : string,level : number):void

    停止线程执行并投出错误。

  • 返回总计算机内存大小(千字节)。

  • getmetatable(t : Variant):Variant

    返回指定表的 metatable。

  • 返回一个递归函数和一个表以在循环中使用。

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

    将提供的代码作为可以执行的函数返回。

  • newproxy(addMetatable : bool):userdata

    创建一个空的 userdata ,具有可选项以便它有一个 metatable。

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

    用于循环的创建者函数。

  • 返回一个iterator函数和提供的表以便在 for 循环中使用。

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

    运行提供的函数,并且在它抛出的任何错误上捕获任何错误,并将其成功和结果返回给函数。

  • print(params : Tuple):void

    将所有提供的值打印到输出。

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

    返回是否 v1v2 平移,以及它们的 metamethodes。

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

    通过绕过任何 metamethods 获得 table[index] 的实际值。

  • 返回字符串或表的长度,无视任何 metamethods 。

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

    通过迂回任何 metamethods 设置 table[index] 的实际值。

  • require(module : ModuleScript):Variant

    返回该给予的模块脚本的值,如果它还没有运行。

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

    返回给定索引后的所有参数。

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

    设置给定表的 mettab。

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

    如果无法,将提供的值返回一个数字或零。

  • tostring(e : Variant):string

    如果无法,将提供的值返回一个字符串或零。

  • type(v : Variant):string

    返回提供的对象的基础类型。

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

    将所有元素从给定的列表返回为表。

  • xpcall(f : function,err : function,args : Tuple):bool,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

void

终止最后一个受保护的函数,并将 message 作为错误消信息输出。如果包含错误的函数在保护函数中不被调用,那么包含错误的脚本将被终止。错误函数本身不会返回,并且作为脚本错误返回。

leve等级 参数指定如何获取错误位置。 使用级别 1 (默认值),错误位置是错误函数被调用的地方。 级2 将错误位置指向调用错误的函数; 然后,在消息中添加错误位置信息。 通过级别 0 将错误位置添加到消息中。

参数

message: string

显示错误消息。

level: number

打印的信息级别。默认为 1。

默认值:1

返回

void

gcinfo

返回总计算机堆内存大小(千字节)。数字反映操作系统的内部堆内存使用率,随着垃圾收集器释放对象而变化。

返回

getmetatable

Variant

如果给定的表有一个,返回其 metatable t ,如果它没有,返回 nil。如果 t 有一个 metatable,并且 __metatable 已设置为 metamethode,它将返回该值。


-- 展示 getmetatable:
local meta = {}
local t = setmetatable({}, meta)
print(getmetatable(t) == meta) --> 是
-- 通过设置 __metable 原始表恢复不可能:
meta.__metatable = "protected"
print(getmetatable(t)) --> protected

参数

t: Variant

获取的对象。

返回

Variant

ipairs

返回三个值:iteriter 函数、表 t 和数字 0 。每次调用它的时候,它都会返回表中的下一个数学索引值对。在通用 for-oop 中,使用返回值可以迭代在表中的每个数学索引值:


local fruits = {"apples", "oranges", "kiwi"}
for index, fruit in ipairs(fruits) do
print(index, fruit) --> 1 苹果,2 橙子,3 kiwi,等等...
end

参数

一张表,其元素要求反复。

loadstring

Variant

从字符串中加载 Lua 代码,并将其作为函数返回。

与标准 Lua 5.1 不同,Roblox 的 Lua 不能使用 loadstring() 加载 Lua 的二进制版本。

loadstring() 默认为禁用。有关启用它的指导,请参阅 ServerScriptService

警告: 此方法会禁用 Luau 优化在返回函数上。 请在使用 loadstring() 时使用 Global.LuaGlobals.getfenv() 和 0> Global.LuaGlobals.setfenv() 来保护返回函数的环境,以确保用

参数

contents: string

指定的字符串将被加载为 Lua 代验证码。

chunkname: string

用于错误消息和调试信息的可选块名。如果未指定,Lua 使用 contents 字符串。

返回

Variant

newproxy

创建一个空的 userdata ,具有可选项以便它有一个 metatable。

参数

addMetatable: bool
默认值: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() 会捕捉错误并

参数

func: function

保护模式下的函数。

args: Tuple

在执行时发送到 func 的参数。

返回

Variant

print

void

接受任何数量的参数,并将其值打印到输出。 print 不是用于格式输出的,但仅作为快速显示值的方式,通常用于调试。 对于格式输出,请使用 string.format() 。在 Roblox 上,

参数

params: Tuple

输出任何数量的参数。

返回

void

rawequal

检查是否 v1v2 无需调用任何 metamethodes。

参数

v1: Variant

第一个要比较的变量。

v2: Variant

第二个变量进行比较。

返回

rawget

Variant

不需要调用任何 мета方法,获得 table[index] 的实际值。

参数

该表将被引用。

index: Variant

t 的索引。

返回

Variant

rawlen

返回不会调用任何 metameth 的字符串或表的长度。

参数

该表将被引用。

返回

rawset

设置 table[index] 的实际值为指定的 value ,而不需要调用任何 metamethode。

参数

该表将被引用。

index: Variant

设置在 t 到指定的 value 。必须与零不同。

value: Variant

值将被设置为指定的 index 在表 t 中。

返回

require

Variant

运行提供的 ModuleScript 和返回的

如上所述,“对象共享”行为不会跨越客户端-服务

请注意,如果 ModuleScript 用户想要运行已上传到 Roblox (用实例名为 MainModule),可以通过使用 require() 函数在资产 ID 上的 11 2>Class.ModuleScript2> 上加载,尽管仅在服务器上。

参数

module: ModuleScript

将执行的 ModuleScript 以取回它提供的返回值。

返回

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

将给定的表 t 设置为 newMeta 。如果 newMeta 为空,表 1> t1> 将被移除。最后,此函数将返回


local meta = {__metatable = "protected"}
local t = {}
setmetatable(t, meta) -- 这将 t 的 metatable 设置为
-- 我们现在有一个表,t,有一个 metatable。如果我们尝试更改它...
setmetatable(t, {}) --> Error: cannot change a protected metatable

参数

用于设置表的 metatable。

newMeta: Variant

如果为零,给定的表的 metatable 将被移除。否则,为给定的表设置的 metatable 将为 t

返回

tonumber

Variant

尝试将参与器转换为指定的基础以解释其中的值。如果无法转换,这个函数将返回 null。

基地可以是任何数量,它们包括在 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(不会提升错误)
-- 提示:如果您想要使用不可转换的数字来提升错误,请使用 with 声明
print(assert(tonumber("roblox"))) --> Error: assertion failed

参数

arg: Variant

将要转换为数字的对象。

base: number

将数量基础转换为 arg

默认值:10

返回

Variant

tostring

收到任何类型的参数,并将其转换为一个合理格式的字符串。 要完全控制数字如何转换,请使用 string.format。 如果 e 的 metabel 有一个 __tostring 的 metamethod,它将以 e 作为唯一的参数返回结果。


local isRobloxCool = true
-- 将Boolean转换为字符串,然后 concatenate:
print("Roblox is cool: " .. tostring(isRobloxCool)) --> Roblox is cool: true

参数

e: Variant

将要转换为字符串的对象。

返回

type

返回其唯一的参数,作为一个字符串编码。这个函数的可能的结果是“nil”(一个字符串,不是值 nil)、“number”、“string”、“Boolean”、“table”、“矢量力ector”、“Function”、“Thread”和“Userdata”。

参数

v: Variant

将返回类型的对象。

返回

unpack

Variant

从指定的表中返回元素。默认情况下,i是1,j是长度list的长度,根据长度操作器的定义。

参数

list: table

元素列表,要从包裹中取出。

第一个元素的索引。

默认值:1

最后一个元素的索引。

默认值:#list

返回

Variant

xpcall

这个函数与 pcall() 类似,除了你可以设置一个新的错误处理器。

xpcall() 在保护模式下

参数

保护模式下的函数。

用于 xpcall 捕获错误时使用的错误处理函数。

args: Tuple

返回

Variant

属性

一个表,它的所有脚本都共享在一个相同的上下文等级别。

_VERSION

一个全球变量(不是函数),可以容纳包含当前解释器版本的字符串。