Lua进阶
Posted 两片空白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua进阶相关的知识,希望对你有一定的参考价值。
前言
学会文档查询:官方文档链接——Lua 5.3 参考手册 - 目录
多文件调用
使用require关键字:
- 运行指定的文件名。
- 末尾不带扩展名。
- 目录层级用'.'分隔。
- 只会运行一次。
- 会将调用的返回值返回。
- 调用的文件从package.path路径中查找。
一般require是用来调用外部库文件的,一般不需要多次调用。
迭代器
作用是用来遍历出table中所有的值。
一般table的迭代:
迭代器有两种:
- ipairs
ipairs适用于带数字且连续下标的table。
如果遇到了不连续的数字下标的table,遇到table中没有的数字下标,我们直到返回的nil,此时,ipairs就会停止遍历。
- pairs
适用于字符串下标的和不连续的数字下标。
pairs内部调用的是next函数。
next()函数,会返回传入table值的下一个值,pairs里记录了获取到的值。
用next也可以快速判断一个table是否为空。
string
lua中string的特点
- 字符串的存储结构。
在lua中字符串的存储结构相当于C++中的vector<char>的形式。一个字符一个字符保存在数组中。实际保存的是字符的字节码。
- 可以保存任意字符的字符串,范围是0x00~0xff,包括不可见字符。特殊的是0x00,在c语言中是以'0'字符结尾,后面的字符就丢失了。在lua中不会,因为里面记录了字符的个数,
- 字符串有序号,保存正序号和负序号。
正序号,起始位置1开始,后面依次增加。负序号,末尾-1开始,前面依次减少。
string的接口
-
返回字符string.byte (s [, i [, j]])
s[i]
,s[i+1]
, ... ,s[j]
的内部数字编码。i
的默认值是 1 ;j
的默认值是i
。
-
string.char (···)
接收零或更多的整数。 返回和参数数量相同长度的字符串。 其中每个字符的内部编码值等于对应的参数值。
-
string.format (formatstring, ···)
返回不定数量参数的格式化版本, 格式化串为第一个参数(必须是一个字符串)。和c语言的printf是用没区别。
-
string.lower (s)
接收一个字符串,将其中的大写字符都转为小写后返回其副本。 其它的字符串不会更改。 对大写字符的定义取决于当前的区域设置。
-
string.pack (fmt, v1, v2, ···)
返回一个打包了(即以二进制形式序列化)
v1
,v2
等值的二进制字符串。 字符串fmt
为打包格式(参见 §6.4.2)。
以上是关于Lua进阶的主要内容,如果未能解决你的问题,请参考以下文章