当前位置: 首页 > news >正文

Lua学习笔记:库函数

本文更新于2026-06-04,使用Lua 5.5.0。

目录
  • 基础函数
    • asset
    • ipairs
    • next
    • pairs
    • print
    • tostring
    • type
  • coroutine
    • coroutine.create
    • coroutine.resume
    • coroutine.wrap
    • coroutine.yield
  • io
    • io.close
    • io.flush
    • io.input
    • io.lines
    • io.open
    • io.output
    • io.popen
    • io.read
    • io.tmpfile
    • io.type
    • io.write
    • FILE:close
    • FILE:flush
    • FILE:lines
    • FILE:read
    • FILE:seek
    • FILE:setvbuf
    • FILE:write
  • os
    • os.date
  • string
    • string.byte
    • string.char
    • string.dump
    • string.find
    • string.format
    • string.gmatch
    • string.gsub
    • string.len
    • string.lower
    • string.match
    • string.rep
    • string.reverse
    • string.sub
    • string.upper
  • table
    • table.concat
    • table.insert
    • table.move
    • table.pack
    • table.remove
    • table.sort
    • table.unpack

官方文档:https://www.lua.org/manual/5.5/

基础函数

asset

断言。不为真则终止后续执行。

asset(BOOL <, MESSAGE>)

ipairs

用于遍历表(数组形式)。

for i, v in ipairs(TABLE) do
end

实际返回:next, TABLE, 0。

next

用于遍历表。

local NEXTINDEX, NEXTVALUE = next(TABLE <, INDEX>)

pairs

用于遍历表(哈希表形式)。

for k, v in pairs(TABLE) do
end

实际返回:next, TABLE, nil。

print

打印。

print(<VALUE<, ...>>)

tostring

转换成字符串。

local STR = tostring(VALUE)

type

返回数据类型。

local STR = type(VALUE)

coroutine

coroutine.create

创建协程。不会启动协程。

local COROUTINE = coroutine.create(FUNCTION)

coroutine.resume

恢复执行协程。

local STATUS, RETURNVALUE<, ...>|YIELDVALUE<, ...>|FAIL = coroutine.resume(COROUTINE <, RESUMEVALUE<, ...>>)

第一次执行时,RESUMEVALUE作为coroutine.create的FUNCTION的参数传入。后续执行时,RESUMEVALUE作为coroutine.yield的返回值。

当协程正常退出或让出时,返回true及退出或让出时的返回值;当协程非正常退出时,返回false和错误信息。

coroutine.wrap

创建协程,返回包装函数。

local WRAPFUNCTION = coroutine.wrap(FUNCTION)

WRAPFUNCTION类似coroutine.resume,但参数只包括RESUMEVALUE,返回值只包括RETURNVALUE|YIELDVALUE。

coroutine.yield

暂停协程,让出执行权。

local RESUMEVALUE<, ...> = coroutine.yield(<YIELDVALUE <, ...>>)

io

API有两种风格:一种是基于文件句柄(io.METHOD),另一种是基于当前操作的文件(FILE:METHOD)。

io.close

关闭文件。

io.close(<FILE>)

如不指定FILE,则关闭默认输出文件。

等同于file:close()

io.flush

将程序中的缓冲区数据刷新至文件。

io.flush()

等同于io.output():flush()

io.input

设置默认输入文件。

io.input(<FILE|FILENAME>)

io.lines

以只读模式打开文件,返回迭代器函数。

local FUNCTION = io.lines(<FILENAME <, ...>>)

每次调用迭代器函数都会从文件返回一行。当泛型for循环结束时,会自动关闭文件。

io.open

打开文件。

local FILE <, FAIL> = io.open(FILE <, MODE>)

如打开失败,则返回nil。

io.output

设置默认输出文件。

io.output(<FILE|FILENAME>)

io.popen

运行外部进程,并返回从此进程读写的文件句柄。

local FILE = io.popen(PROGRAM <, MODE>)

MODE可为:

  • a:追加。
  • r:只读。
  • w:只写。会清空文件。
  • a+:读写追加。
  • r+:读写。不清空文件,但会写覆盖。
  • w+:读写。会清空文件。

io.read

从文件读取内容。

local STR = io.read(<FORMAT>)

FORMAT可为:

  • a:读取余下所有内容。
  • l:读取一行,不包括换行符。默认值。
  • L:读取一行,包括换行符。
  • n:读取一个数值。
  • 整数:读取若干字节。

等同于io.input().read(<FORMAT>)

io.tmpfile

返回可读写的临时文件。进程结束时会被自动删除。

local FILE = io.tmpfile()

io.type

返回文件的状态类型。

var STR = io.type(FILE)

返回值可为:

  • closed file:关闭的文件。
  • file:打开的文件。
  • nil:文件句柄不存在。

io.write

写入文件。

io.write(<STR|NUMBER <, ...>>)

FILE:close

关闭文件。

FILE:close()

FILE:flush

将缓冲区数据刷新至文件。

FILE:flush()

FILE:lines

以只读模式打开文件,返回迭代器函数。

local FUNCTION = FILE:lines(<FILENAME <, ...>>)

每次调用迭代器函数都会从文件返回一行。当泛型for循环结束时,不会自动关闭文件。

FILE:read

从文件读取内容。

local STR = FILE.read(<FORMAT>)

FORMAT可为:

  • a:读取余下所有内容。
  • l:读取一行,不包括换行符。默认值。
  • L:读取一行,包括换行符。
  • n:读取一个数值。
  • 整数:读取若干字节。

FILE:seek

设置和获取当前文件位置。

location POSITION = FILE:seek(<WHENCE <, OFFSET>>)

WHENCE可为:

  • cur:当前位置。
  • end:文件结尾。
  • cur:文件开头。

FILE:setvbuf

设置输出文件的缓存模式。

FILE:setvbuf(MODE <,SIZE>)

MODE可为;

  • full:全缓存,缓存满后才输出。
  • line:行缓存,以行为单位输出。
  • no:无缓存,直接输出。

FILE:write

写入文件。

FILE:write(<STR|NUMBER <, ...>>)

os

os.date

格式化时间。

local STR = os.date(FORMAT <, TIME>)

FORMAT使用"%"开头的格式化字符串。

string

也可以使用STRING:METHOD的面向对象形式。

string.byte

返回字符串的ASCII码。

local ASCII<, ...> = string.byte(STR <, START <, END>>)

START默认为1,END默认为START。

string.char

使用ASCII码组装字符串。

local STR = string.char(ASCII<, ...>)

string.dump

将函数序列化为二进制字符串。

local STR = string.dump(FUNCTION <, STRIP>)

如果STRIP为true,则不会包含所有调试信息,以节省空间。

string.find

查找子串。

local START, END = string.find(STR, PATTERN <, OFFSET <, PLAIN>>)

OFFSET为负数表示从结尾数起的偏移(含)。默认为1。

PLAIN为true则为纯文本匹配。默认为false。

string.format

格式化字符串。

local STR = string.format(FORMAT <, VALUE<, ...>>)

string.gmatch

全局匹配。返回一个迭代器,用来遍历所有匹配的值。

for VALUE<, ...> in string.gmatch(STR, PATTERN) do
end

string.gsub

全局替换。

local NEWSTR, COUNT = string.gsub(STR, PATTERN, VALUE <, LIMIT>)

string.len

字符串长度。

local N = string.len(STR)

string.lower

小写字符串。

local NEWSTR = string.lower(STR)

string.match

匹配子串。

local SUBSTR = string.match(STR, PATTERN <, OFFSET>)

OFFSET为负数表示从结尾数起的偏移(含)。默认为1。

string.rep

重复字符串。

local NEWSTR = string.rep(STR, N <, SEPARATOR>)

string.reverse

翻转字符串。

local NEWSTR = string.reverse(STR)

string.sub

字符串子串。

local SUBSTR = string.sub(STR, START <, END>)

START和END如指定,均包含此元素。START默认为1,END默认为-1。

string.upper

大写字符串。

local NEWSTR = string.upper(STR)

table

table.concat

拼接数组元素。拼接是元素必需为数字或字符串。

local STR = table.concat(TABLE <, SEPARATOR <, START <, END>>>)

START和END如指定,均包含此元素。

table.insert

向数组中插入元素。

table.insert(TABLE <, INDEX>, VALUE)

VALUE插入于INDEX索引。如不指定INDEX,则于末尾插入。

table.move

复制数组元素。

table.move(TABLE, START, END, INDEX <, OTHERTABLE>)

将下标区间[START, END]的数组元素复制至INDEX索引。如不指定OTHERTABLE,则为TABLE自身。

table.pack

将表打包至新表。新表的索引1为原表的拷贝,属性n为原表的大小。

local NEWTABLE = table.pack(TABLE)

table.remove

从数组中移除并返回一个元素。

local VALUE = table.remove(TABLE <, INDEX>)

如不指定INDEX,默认为末尾的元素。

table.sort

数组排序。

table.sort(TABLE <, COMPAREFUNCTION>)

table.unpack

拆解数组。

local VALUE<, ...> = table.unpack(TABLE <, START <, END>>)
http://www.rkmt.cn/news/1462548.html

相关文章:

  • HR总监紧急通知:下季度起所有请假系统必须通过ISO/IEC 23894 AI治理认证,你准备好了吗?
  • 2026年常州合同纠纷律师避坑指南:5位专业可靠律师推荐 - 本地品牌推荐
  • 无人机组装线多机型共线落地实测 柔性生产可行性科普
  • AI搜索优化如何赋能杭州企业?杭州爱搜索深度解析GEO实战路径 - 品牌报告
  • CentOS服务器运维笔记:为Tesla K80等老显卡配置稳定的CUDA深度学习环境
  • 论智慧的本质属性与伪智慧批判——基于先验绝对真理标准的哲学清算
  • 什么是大模型?
  • SuperPNG终极指南:如何用免费插件彻底优化Photoshop PNG导出
  • 自然语言交互正在改变企业软件
  • 科研云虚拟机实战指南:从需求分析到成本控制
  • 多协议安全通信赋能工业安全相机PROFISafe / CIP Safety / FSoE 全面支持
  • Windows平台终极APK安装器:深度解析APK Installer的技术架构与性能优化策略
  • 从拆解到编程:深度剖析单相步进电机原理与石英钟DIY改造
  • Arduino RGB氛围灯制作:从PWM调光到动态灯光编程
  • 毫米级精度怎么来的?拆解相位式激光测距仪里的‘多把尺子’原理
  • 基于555定时器的复调和声合成器:点对点焊接与电路设计实践
  • Python自动化实战:拒绝多店串号,我写了一套带指纹隔离的店群管理系统
  • 一个人写了一套店群自动化软件,让300个店铺的人力成本从5万降到8千
  • Agent OS :五种驯服不确定性的范式
  • 2026四川本地人常推荐的导游名单|无购物行程、正规服务与避坑说明 - 随峰国旅
  • 网络投票平台推荐,西瓜评选小程序实测推荐 - 投票小程序
  • 2026年北京工业纯水/污水处理设备厂家推荐:纯净水、软化水及一体化污水处理设备优质品牌深度解析! - 品牌企业推荐师(官方)
  • 2026年 皇姑区企业资质代办十大服务商推荐:EDI/ICP/文网文许可证、特种设备资质办理与股权架构一站式高效代办指南 - 品牌企业推荐师(官方)
  • 保姆级教程:在Windows上用Darknet搞定YOLO语义分割(Cityscapes数据集+源码+可视化)
  • 2026年 焊接声发射检测设备实力之选:实时监测/精准定位,焊接质量智能保障新标杆 - 企业推荐官【官方】
  • 2026四川纯玩无购物导游优选|成都川西九寨沟行程规划与费用说明 - 随峰国旅
  • 第二十六篇:旧项目维护利器:如何让AI理解历史债务、添加新功能
  • 2026 银川黄金回收靠谱商家推荐|铂金白银 K 金金条首饰回收价格与门店指南 - 同城好物推荐官
  • 2026年北京冷藏运输品牌推荐榜:生鲜/果蔬/鲜肉/水产/熟食/乳制品/预制菜冷链服务深度测评 - 品牌企业推荐师(官方)
  • MonkeyCode 云端环境详解:本地 vs 云端开发环境对比