lua中文手册地址 http://www.runoob.com/manual/lua53doc/manual.html
pcall和xpcall
pcall (f [, arg1, ···])
传入参数,以 保护模式 调用函数 f 。 这意味着 f 中的任何错误不会抛出; 取而代之的是,pcall 会将错误捕获到,并返回一个状态码。 第一个返回值是状态码(一个布尔量), 当没有错误时,其为真。 此时,pcall 同样会在状态码后返回所有调用的结果。 在有错误时,pcall 返回 false 加错误消息。
xpcall (f, msgh [, arg1, ···])
这个函数和 pcall 类似。 不过它可以额外设置一个消息处理器 msgh。
垃圾回收
Lua 实现了一个增量标记-扫描收集器。 它使用这两个数字来控制垃圾收集循环: 垃圾收集器间歇率 和 垃圾收集器步进倍率。 这两个数字都使用百分数为单位 (例如:值 100 在内部表示 1 )。
你可以通过在 C 中调用 lua_gc
或在 Lua 中调用 collectgarbage
来改变这俩数字。 这两个函数也可以用来直接控制收集器(例如停止它或重启它)。
弱表
一张表的元表中的 __mode
域控制着这张表的弱属性。 当 __mode
域是一个包含字符 'k
' 的字符串时,这张表的所有键皆为弱引用。 当 __mode
域是一个包含字符 'v
' 的字符串时,这张表的所有值皆为弱引用。
协程
Lua 支持协程,也叫 协同式多线程。 一个协程在 Lua 中代表了一段独立的执行线程。 然而,与多线程系统中的线程的区别在于, 协程仅在显式调用一个让出(yield)函数时才挂起当前的执行
调用函数 coroutine.create
可创建一个协程。 其唯一的参数是该协程的主函数。 create
函数只负责新建一个协程并返回其句柄 (一个 thread 类型的对象); 而不会启动该协程。
通过调用 coroutine.yield
使协程暂停执行,让出执行权
参考文档 https://www.cnblogs.com/zrtqsk/p/4374360.html
匹配模式
Lua 中的匹配模式直接用常规的字符串来描述。 它用于模式匹配函数 string.find
, string.gmatch
, string.gsub
, string.match
。 这一节表述了这些字符串的语法及含义(即它能匹配到什么)。
字符类:
字符类 用于表示一个字符集合。 下列组合可用于字符类:
- x: (这里 x 不能是 魔法字符
^$()%.[]*+-?
中的一员) 表示字符 x 自身。 .
: (一个点)可表示任何字符。%a
: 表示任何字母。%c
: 表示任何控制字符。%d
: 表示任何数字。%g
: 表示任何除空白符外的可打印字符。%l
: 表示所有小写字母。%p
: 表示所有标点符号。%s
: 表示所有空白字符。%u
: 表示所有大写字母。%w
: 表示所有字母及数字。%x
: 表示所有 16 进制数字符号。%x
: (这里的 x 是任意非字母或数字的字符) 表示字符 x。 这是对魔法字符转义的标准方法。 所有非字母或数字的字符 (包括所有标点,也包括非魔法字符) 都可以用前置一个 '%
' 放在模式串中表示自身。[set]
: 表示 set 中所有字符的联合。 可以以 '-
' 连接,升序书写范围两端的字符来表示一个范围的字符集。 上面提到的%
x 形式也可以在 set 中使用 表示其中的一个元素。 其它出现在 set 中的字符则代表它们自己。 例如,[%w_]
(或[_%w]
) 表示所有的字母数字加下划线),[0-7]
表示 8 进制数字,[0-7%l%-]
表示 8 进制数字加小写字母与 '-
' 字符。交叉使用类和范围的行为未定义。 因此,像
[%a-z]
或[a-%%]
这样的模式串没有意义。[^set]
: 表示 set 的补集, 其中 set 如上面的解释。
所有单个字母表示的类别(%a
,%c
,等), 若将其字母改为大写,均表示对应的补集。 例如,%S
表示所有非空格的字符。
如何定义字母、空格、或是其他字符组取决于当前的区域设置。 特别注意:[a-z]
未必等价于 %l
。