目录
- `_G`
- `_VERSION`
- [`assert(condition, message)`](#
assert(condition, message)
) - [`collectgarbage(opt [, arg])`](#
collectgarbage(opt [, arg])
) - `dofile(filename)`
- [`error(message [, level])`](#
error(message [, level])
) - `getmetatable(object)`
- `ipairs(t)`
- [`load(chunk [, chunkname [, mode [, env]]])`](#
load(chunk [, chunkname [, mode [, env]]])
) - [`loadfile(filename [, mode [, env]])`](#
loadfile(filename [, mode [, env]])
) - [`next(table [, key])`](#
next(table [, key])
) - `pairs(t)`
- [`pcall(f, ...)`](#
pcall(f, ...)
) - `print(...)`
- [`rawequal(a, b)`](#
rawequal(a, b)
) - [`rawget(table, key)`](#
rawget(table, key)
) - `rawlen(v)`
- [`rawset(table, key, value)`](#
rawset(table, key, value)
) - `require(modname)`
- [`select(index, ...)`](#
select(index, ...)
) - [`setmetatable(table, metatable)`](#
setmetatable(table, metatable)
) - [`tonumber(e [, base])`](#
tonumber(e [, base])
) - `tostring(v)`
- `type(v)`
- [`xpcall(f, msgh [, ...])`](#
xpcall(f, msgh [, ...])
)
以下是 Lua 中基础函数的详细说明,按您提供的列表逐个解析:
_G
-
作用:全局变量表,存储所有全局变量。
-
示例 :
luaprint(_G) -- 输出全局表地址 _G.x = 10 -- 等同于全局变量 x = 10 print(x) --> 10
_VERSION
-
作用 :返回当前 Lua 版本的字符串(如
"Lua 5.4"
)。 -
示例 :
luaprint(_VERSION) --> "Lua 5.4"
assert(condition, message)
-
作用 :若条件为
false
或nil
,抛出错误(携带message
);否则返回所有参数。 -
示例 :
luaassert(1 == 1, "Math is broken!") -- 正常执行 assert(nil, "Value is nil!") -- 抛出错误
collectgarbage(opt [, arg])
-
作用 :控制垃圾回收器。
opt
为操作选项(如"collect"
执行回收,"count"
返回内存使用量)。 -
常用选项 :
"collect"
: 执行完整垃圾回收。"count"
: 返回当前内存使用量(KB)。"stop"
: 暂停自动回收。"restart"
: 重启自动回收。
-
示例 :
luaprint(collectgarbage("count")) --> 输出当前内存使用量 collectgarbage("collect") -- 强制回收
dofile(filename)
-
作用:执行指定 Lua 文件,返回文件中的最后一个表达式的值。
-
示例 :
lua-- 文件 test.lua 内容:return 42 local value = dofile("test.lua") print(value) --> 42
error(message [, level])
-
作用 :抛出错误,
level
指定错误位置层级(默认为 1)。 -
示例 :
luaerror("Something went wrong!", 2)
getmetatable(object)
-
作用 :返回对象的元表,若元表被保护则返回
nil
。 -
示例 :
lualocal t = {} print(getmetatable(t)) --> nil(默认无元表) setmetatable(t, { __index = someTable })
ipairs(t)
-
作用 :按顺序遍历数组部分(从 1 开始,直到遇到
nil
)。 -
示例 :
lualocal t = { "a", "b", c = "d" } for i, v in ipairs(t) do print(i, v) --> 1 a, 2 b end
load(chunk [, chunkname [, mode [, env]]])
-
作用 :将字符串或函数
chunk
编译为函数,不立即执行。成功返回函数,失败返回nil
和错误信息。 -
示例 :
lualocal func = load("print('Hello')") func() --> Hello
loadfile(filename [, mode [, env]])
-
作用 :类似
load
,但从文件加载代码。 -
示例 :
lualocal func = loadfile("test.lua") func() -- 执行 test.lua
next(table [, key])
-
作用 :遍历表中的键值对。返回下一个键和值,通常与
pairs
配合使用。 -
示例 :
lualocal t = { a = 1, b = 2 } local k, v = next(t) print(k, v) --> a 1(或其他键,无序)
pairs(t)
-
作用:遍历表的所有键值对(包括非数组部分)。
-
示例 :
lualocal t = { a = 1, b = 2 } for k, v in pairs(t) do print(k, v) --> a 1, b 2(顺序不确定) end
pcall(f, ...)
-
作用 :保护模式调用函数
f
。返回布尔状态和结果/错误信息。 -
示例 :
lualocal success, result = pcall(function() error("Oops!") end) print(success) --> false print(result) --> "Oops!"
print(...)
-
作用:输出参数值到标准输出(参数转换为字符串,用制表符分隔)。
-
示例 :
luaprint("Hello", 42) --> Hello 42
rawequal(a, b)
-
作用 :直接比较
a
和b
是否相等(不触发元方法)。 -
示例 :
lualocal t1 = {} local t2 = t1 print(rawequal(t1, t2)) --> true
rawget(table, key)
-
作用 :直接获取
table[key]
(绕过元方法__index
)。 -
示例 :
lualocal t = {} print(rawget(t, "x")) --> nil
rawlen(v)
-
作用 :直接获取长度(字符串长度或表的数组部分长度,不触发
__len
元方法)。 -
示例 :
luaprint(rawlen("abc")) --> 3 print(rawlen({1,2,3})) --> 3
rawset(table, key, value)
-
作用 :直接设置
table[key] = value
(绕过元方法__newindex
)。 -
示例 :
lualocal t = {} rawset(t, "x", 10) print(t.x) --> 10
require(modname)
-
作用 :加载模块(
.lua
或 C 库),避免重复加载。 -
示例 :
lualocal math = require("math") print(math.sqrt(4)) --> 2
select(index, ...)
-
作用 :获取可变参数
...
的部分内容。select('#', ...)
返回参数个数。select(n, ...)
返回第n
个参数之后的所有参数。
-
示例 :
luaprint(select(2, "a", "b", "c")) --> b c
setmetatable(table, metatable)
-
作用:设置表的元表,返回表本身。
-
示例 :
lualocal t = {} setmetatable(t, { __add = function(a, b) return a + b end })
tonumber(e [, base])
-
作用 :将值转换为数字(可指定进制
base
),失败返回nil
。 -
示例 :
luaprint(tonumber("42")) --> 42 print(tonumber("FF", 16)) --> 255
tostring(v)
-
作用 :将值转换为字符串(可能触发
__tostring
元方法)。 -
示例 :
luaprint(tostring(42)) --> "42"
type(v)
-
作用 :返回值的类型名称(如
"number"
、"table"
)。 -
示例 :
luaprint(type({})) --> "table"
xpcall(f, msgh [, ...])
-
作用 :类似
pcall
,但提供错误处理函数msgh
(用于获取堆栈信息)。 -
示例 :
lualocal function errHandler(err) return debug.traceback("Error: " .. err) end xpcall(function() error("Fail!") end, errHandler)
以上是 Lua 基础函数的详细说明。不同 Lua 版本可能有细微差异(如 rawlen
在 5.2+ 引入),建议根据实际使用的版本参考官方文档。