博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua5.1中的setfenv使用
阅读量:6069 次
发布时间:2019-06-20

本文共 530 字,大约阅读时间需要 1 分钟。

setenv是在lua5.1中有的改变函数作用域的函数。

用法是setenv(func or number,tbl),第一个参数可以是数字也可以是函数,数字1表示当前的作用于,2表示上一层的作用域,特殊情况0,setfenv changes the environment of the running thread. In this case,setfenv returns no values.此时是不返回的,其他情况都返回第一个参数指向的函数(被他坑了好久,以为不返回!!因为我只看文档的最后也就是0的特殊情况!!!)

可以用来做模块加载来使用

local FuncEnv={}setmetatable(FuncEnv, {__index = _G})local func=loadfile("a.lua")setfenv(func,FuncEnv)()--等价于setenv(func,FuncEnv);func();FuncEnv.Test()--FuncEnv就是新的模块啦,可以用其中的函数啦,其实,lua内部的model命令或者函数也是用的这个原理

其中a.lua为如下:

function test()    print("Test")end

 

转载地址:http://nvygx.baihongyu.com/

你可能感兴趣的文章
从MFQ方法到需求分析
查看>>
android.view.WindowManager$BadTokenException: Unable to add window
查看>>
HDU5012:Dice(bfs模板)
查看>>
iphone openssh
查看>>
Linux下MEncoder的编译
查看>>
Xamarin使用ListView开启分组视图Cell数据展示bug处理
查看>>
Javascript中闭包(Closure)的探索(一)-基本概念
查看>>
spark高级排序彻底解秘
查看>>
ylbtech-LanguageSamples-PartialTypes(部分类型)
查看>>
福建省促进大数据发展:变分散式管理为统筹集中式管理
查看>>
开发环境、生产环境、测试环境的基本理解和区别
查看>>
tomcat多应用之间如何共享jar
查看>>
Flex前后台交互,service层调用后台服务的简单封装
查看>>
技术汇之物联网设备网关技术架构设计
查看>>
OSX10.11 CocoaPods 升级总结
查看>>
深入浅出Netty
查看>>
3.使用maven创建java web项目
查看>>
笔记本搜索不到某一AP广播的SSID,信道的原因
查看>>
基于Spring MVC的异常处理及日志管理
查看>>
MediaBrowserService 音乐播放项目《IT蓝豹》
查看>>