Lua 库

发布时间: 更新时间: 总字数:578 阅读时间:2m 作者: 分享 复制网址

Lua 常见的函数库

标准库

详细信息参考 https://www.lua.org/manual/5.1/

Lua 的库,本质上是包含函数的表,表类似于命名空间

  • base : 最核心的函数,可以直接使用
    • type()
    • print()
    • pairs
    • ipairs
    • assert(s) 断言
    • error(msg)
    • collectgarbage(opt) Lua 垃圾回收函数
      • collectgarbage("count") 检查内存使用情况
      • collectgarbage("collect") 强制运行内存垃圾回收
    • f = loadstring(str) 加载 Lua 代码段,调用 f()
    • pcall(protected call) 保护函数,以 true/false 返回调用结果
      • true 成功,同时返回调用结果:local ok, v = pcall(math.sqrt, 2)
      • false 失败,同时返回错误:local ok, err = pcall(require, "xxx")
    • xpcall 支持错误处理函数
  • package : 管理模块
    • require 加载 Lua 模块的函数
    • package.path
    • package.cpath
    • package.loaded 本质是一个表,保存了已加载的模块,通过 package.loadedloadstring(str) 实现热加载代码
      • package.loaded.num = loadstring("return 3.14")
  • string : 字符串操作
    • string.upper(s) / string.lower(s)
    • string.sub(s, from, to) 提取字符串
    • string.format(format, …)
  • table : 表操作相关函数
    • table.insert(arr, pos, value)
      • 追加的推荐方式 arr[#arr + 1] = "x"
    • table.remove(arr, pos)
    • table.sort(arr, comp) comp 是比较符,如 >
    • table.concat(arr, sep) 使用分隔符连接数组
    • jit 库的扩展
      • 新建:local table_new = require "table.new"; local t = table_new(narray, nhash)
      • 清空:table.clear(t)
      • table.clone(t)
  • math : 数据计算
    • math.floor(x) / math.ceil(x)
    • math.randomseed(x)
    • math.max(x, …) / math.min(x, …)
  • io : 文件操作,是阻塞的
    • io.open(filename, mode)
    • io.popen(prog, mode)
      • f = io.popen("ps -ef | grep openresty")
      • f:read()
      • f:close()
  • os : 操作系统的函数
    • os.execute(cmd)
      • os.execute(“mkdir " .. name)
    • os.remove(filename) / os.remove(filename, newname)
    • os.date(format, time)
      • os.date("%Y-%m-%d")
  • debug
    • print(debug.traceback())
  • jit
    • jit.version
    • jit.os
    • jit.version_num
    • jit.arch
    • jit.status()

包管理工具

LuaRocks 是Lua编程语言的程序包管理器,它提供了分发Lua模块的标准格式,易于管理rock安装的工具以及用于分发它们的服务器

国内代理

  • luarocks.cn 是国内加速网站,使用 --server https://luarocks.cn 指定国内源,示例
$ luarocks install apisix --server https://luarocks.cn
$ luarocks install kong --server https://luarocks.cn

示例

pairs vs ipairs

  • 基本使用
local print_table = function (t)
  for key, value in pairs(t) do
    print(key .. " " .. value)
  end
end

local t1 = {1, 2, 3, 4, "hi"}
print_table(t1)

-- 1 1
-- 2 2
-- 3 3
-- 4 4
-- 5 hi

local t2 = {}
for i=1,10 do
  table.insert(t2, 1, i)
end
print_table(t2)
-- 1 10
-- ...
-- 10 1

-- print(table.maxn(t2))  Lua 5.1
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数