闭包应用:
1. 作为高阶函数的参数,如table.sort的参数。
2. 创建其他函数的函数,即返回一个闭包。
3. 作为回调函数,即upvalue不一样。
4. 创建安全环境-沙盒。
5. 实现迭代器。
require机制:
1. require只加载一次,按特定的规则去查找文件并且加载。a = require("test")
2. loadfile编译代码,将整个模块文件当成一个函数返回,但不会执行代码。a = loadfile("test.lua"); a()
3. dofile读入代码文件并编译执行。a = dofile("test.lua")
模块和包:
_G和_ENV的区别:
5.1之前:改变环境用setfenv
5.2之后:引入_ENV叫做环境,是一个upvalue(非局部变量)。为了兼容5.1之前的版本,_ENV['_G']指向了_ENV自身。
元表:
1. __index用来对表进行访问,可以是设置成表或者函数。
2. __newindex用来对表进行更新,对新索引键会调用元方法,而不进行赋值。可以使用rawset函数更新表。
3. __call用来调用一个值,print(table1(table2))
4. __tostring用于修改表的输出行为。
协程:
1. 函数有create, resume, yield, status, wrap, running
文件I/O:
错误处理:
调试:
垃圾回收: