function foo()
print(g or "No g defined!")
end
foo()
setfenv(foo, { g = 100, print = print }) --设置foo的环境为表{ g=100, ...}
foo()
print(g or "No g defined!")
--No g defined!
--100
--No g defined!定义:函数环境就是函数在执行时所见的全局变量的集合,以一个表来承载。--mypack.lua:
module(..., package.seeall) --定义包
ver = "0.1 alpha"
function aFunInMyPack()
print("Hello!")
end
_G.aFuncFromMyPack = aFunInMyPack--testP.lua: pack = require "mypack" --导入包 print(ver or "No ver defined!") print(pack.ver) print(aFunInMyPack or "No aFunInMyPack defined!") pack.aFunInMyPack() print(aFuncFromMyPack or "No aFuncFromMyPack defined!") aFuncFromMyPack()
--执行testP.lua结果 No ver defined! 0.1 alpha No aFunInMyPack defined! Hello! function: 0068CB50 Hello!定义:包是一种组织代码的方式。
Lua进阶(二)——函数环境、包,码迷,mamicode.com
原文地址:http://blog.csdn.net/shimazhuge/article/details/24842787