setenv setfenv
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
setenv setfenv相关推荐
- 多线程中使用mktime和setenv函数
在编写ATS插件的过程中,发现使用mktime会偶尔出现段错误, 经过网上调研,发现mktime等函数不是线程安全的, 于是编写下面的代码进行测试. 注意加锁和不加锁区别很大, 在mktime中使用多 ...
- lua的table+setfenv+setmetatable陷阱
--file1.lua x = funciton() print("this is x") end ------------- --file2.lua local t = {} ...
- 解决:未找到setenv命令
转自:一叶梧桐 在Ubuntu12.04中配置python环境变量:setenv PATH "$PATH:/usr/local/bin/python",提示未找到setenv命令. ...
- 设置函数环境——setfenv
当我们在全局环境中定义变量时经常会有命名冲突,尤其是在使用一些库的时候,变量声明可能会发生覆盖,这时候就需要一个非全局的环境来解决这问题.setfenv函数可以满足我们的需求. setfenv(f, ...
- 进程环境详解(四)---getenv、putenv和setenv函数详解
在Linux中的c程序的典型内存分布中,之前提到的有 text段.data段.bss段.堆和栈这几部分,在笔记"麦子学院c语言->典型c语言程序的c内存分布"中介绍了.但是其 ...
- linux编程:getenv,putenv,setenv
1.getenv 头文件 #include<stdlib.h> 函数原型 char * getenv(const char *name); 函数说明 getenv()用来取得参数name环 ...
- 2通过程序获得环境变量,getenv(),setenv()函数和unsetenv()函数,env查看环境变量,echo输出指定的环境变量
1进程环境 libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明.例如: 运行结果: 2.env命令可以查看进程信息 3. ...
- 设置函数环境——setfenv(转)
当我们在全局环境中定义变量时经常会有命名冲突,尤其是在使用一些库的时候,变量声明可能会发生覆盖,这时候就需要一个非全局的环境来解决这问题.setfenv函数可以满足我们的需求. setfenv(f, ...
- C++:getenv setenv -- 获取设置系统环境变量
C++:getenv & setenv -- 获取&设置系统环境变量 1. getenv:取得环境变量内容 头文件- #include<stdlib.h> 格式: char ...
最新文章
- Git 历险记(三)——创建一个自己的本地仓库
- Kafka如何通过精妙的架构设计优化JVM GC问题
- 获取redis实例绑定cpu的情况
- How is SAP UI5 Aggregation designed
- HTML的footer置于页面最底部
- 加密原理公钥私钥CA
- 2015.5.6(servlet基础)
- 韩语在线翻译图片识别_一键截图识别屏幕文字,支持实时翻译还能朗读
- leetcode刷题之 两数之和
- I2S,PCM,IOM-2,I2C,SPI,UART,GPIO
- 介绍4个大神常用而你不常用的python函数--assert,map,filter,reduce
- ofo生死局:拿什么续命?
- 中国五千年统一与分裂
- python jinja2_Python模块学习 - jinja2
- 【HTML】讲讲对HTML5的语义化的理解
- python识别字母代码_【Python-Opencv】KNN英文字母识别
- linux系统修改启动logo的步骤
- Android 项目必备(二)--> 启动页 引导页
- cython 安装升级_浅尝Kivy
- 跟我20天学Java:01-计算机基础以及JDK、IDEA等安装详解