pcall(f[,arg1,..])
- 以保护模式调用函数f
第一个返回值是状态码(一个布尔量), 当没有错误时,其为真。 此时,pcall 同样会在状态码后返回所有调用的结果。
next (table [, index])
运行程序来遍历表中的所有域。 第一个参数是要遍历的表,第二个参数是表中的某个键。 next 返回该键的下一个键及其关联的值。 如果用 nil 作为第二个参数调用 next 将返回初始键及其关联值
__newindex
- 当settable操作,key存在直接赋值。否则调用__newindex元方法(如果有)
local t = {}
--t[1] = 1
print("t:",t)
setmetatable(t,{__newindex = function(t,k,v)
print(t,k,v) ---和上面的t是同一个
end})
t[2] = 2
t[1] = 11
_ENV 外部的局部变量
被 _ENV 用于值的那张表被称为 环境。
Lua 保有一个被称为 全局环境 特别环境。
1,设置函数环境——setfenv
环境:暂且简单理解成Namespace。解决命名冲突问题。
(当我们在全局环境中定义变量时经常会有命名冲突,尤其是在使用一些库的时候,变量声明可能会发生覆盖,这时候就需要一个非全局的环境来解决这问题。setfenv函数可以满足我们的需求。)
setfenv(f, table):设置一个函数的环境
(1)当第一个参数为一个函数时,表示设置该函数的环境
(2)当第一个参数为一个数字时,为1代表当前函数,2代表调用自己的函数,3代表调用自己的函数的函数,以此类推