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