lua的table+setfenv+setmetatable陷阱
--file1.lua
x = funciton()
print("this is x")
end
-------------
--file2.lua
local t = {}
local _G = _G
setfenv(1,t) --设置了这个之后,只要是在本文件中对未声明变量的访问,全部会导致递归。
_G.setmetatable(t, {
__index = function(t, i)
if i != "x" then return end
dofile("file1.lua") --我以为这样就会把x声明为t中的一个全局变量。但是我错了。file1.lua内容加载后,是在块内出现的。都是局部变量
return t[i]
end
})
return t
-----------------
--file3.lua
require("file2")
Main_t.x()
-----------------
运行:lua file3.lua
结果自然是无限循环
lua的table+setfenv+setmetatable陷阱相关推荐
- Lua 的table遍历 【转】
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rangercyh.blog.51cto.com/1444712/1032925 ...
- Lua 之table的测试
一.lua 的 table构造 1.字符串作为table索引 法1. MyTable = {x = "xixi"} 法2. MyTable = {["x"] = ...
- Lua 中 table 库函数 table.concat 连接 函数
Lua 中 table 库函数 table.concat 连接 函数 do--> table.concat 连接 函数 tab = {"a", "c", ...
- lua之table的使用
本文对从数据结构,存储和使用三个角度对lua之table的使用进行小结. 数据结构: table是lua的一种数据结构,可以用来存放各种类型的元素,例如可以创建数组和字典,以及二者混合的数据结构, 例 ...
- 【游戏开发解答】Unity使用lua将table转为树结构,以多级折叠内容列表的UI形式展现(树结构 | UGUI | 折叠展开 | lua)
文章目录 一.前言 二.Unity lua环境 三.树节点 1.创建脚本:TreeNode.lua 2.封装节点 四.树逻辑 1.创建脚本:TreeLogic.lua 2.构造测试数据 3.构造树 4 ...
- lua中table.和table[]的区别
lua中table.和table[]的区别 lua中的table可以定义为如下格式 local tab = { ["one"] = 1, ["two"] = 2 ...
- 【原】lua的table深拷贝
一般写的时候要注意以下几个问题: 1.自己里面的属性是自己,要防止死循环 2.同一个table地址出现在table属性(k或者v)的不同地方,复制时不能复制成2个table地址,需与原来地址保持一致 ...
- lua中table的常用方法
转载:https://blog.csdn.net/Fenglele_Fans/article/details/83627021 1:table.sort() language = {"lua ...
- lua的table库中的常用函数总结
table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下: (1).table 是一个"关联数组",数组的索引可以是数字或者是字符串; (2).tab ...
最新文章
- 2020-09-05
- 想知道你在网上的发言,被怎么分析么?
- 《通过Web远程浏览并控制Tiny6410上的usb摄像头》---实战篇
- linux nas解决方案_阿里产品总监:四大 Linux 支持的 NAS 解决方案
- 浅谈二次元场景特征和绘制手法
- PhpStorm 对 AngularJS 的支持
- shiro 解决 跨域(仅端口不同) 登陆 问题
- jsp后台批量导入excel表格数据到mysql中_运用java解析excel表,拿到表中的数据并批量插入数据库...
- PNG图片怎么转成ICO
- 让Yahoo!奇摩害怕的无名小站
- 互联网公司的几种销售模式
- 比亚迪--一文看懂--家用新能源汽车产品线
- 关于hadoop运行成功但是无法链接web页面
- 【小程序】小程序安卓,ios,ipad兼容问题
- PDF怎么添加页码?PDF添加页码的方法
- 一名SM是怎么炼成的(之一锻炼领导力)
- IOT专用IOP平台
- Real-Time Rendering 4th Edition 实时渲染第四版 第三章 图形处理单元(The Graphics Processing Unit)
- php是什么化学物,dmap是什么化学物质以及它的性质用途
- java台球游戏设计原理_台球游戏的核心算法和AI(1)