Lua从入门到放弃--环境

周六那天,我找了一个著名的手相大师给我看手相,他看了看我的手说:“你的手掌很大,你一定会孤单。”我说:“啊?这都能看出来?为什么?”手相大师说:“因为越掌大越孤单。”我TMD也是醉了...


类型为thread, function, userdata的对象,出了元表(metatable)外还可以用另一个与之关联的被称作他们的环境的一个表,也是一个常规表,多个对象可以共享同一个表。

userdata的环境在lua中没有意义。这个东西只是为了程序员想把一个表关联到一个userdata上时提供便利。

关联在线程上的环境被称作全局环境。全局环境被用作它其中的线程以及线程的非嵌套函数(通过loadfile, loadstring, load)的缺省环境。而且它可以被C代码直接访问。

关联在C函数上的环境可以直接被C代码访问。它们会作为这个C函数中创建的其它函数的缺省环境。

关联在lua函数上的环境用来接管在函数内对全局变量的所有访问。它们会作为这个函数的其它函数的缺省环境。

我们可以通过setfenv来改变一个lua函数或是在正在运行中的线程的环境。而想操作其它对象(userdata、C函数、其它线程)的环境的话,就必须使用C API。


本文参考lua手册  http://www.lua.org/manual/5.3/manual.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值