《Programming In Lua》书上一个有问题的代码
2015-06-30 12:23
435 查看
--[[--------------------------------------------------- Programmer : EOF File : accessing_non-local_varibles.lua Date : 2015.06.29 E-mail : jasonleaster@gmail.com Chapter 23 of << Programming in Lua >> Demonstration for "Accessing non-local varibles" ------------------------------------------------------]] function getvarvalue(name, level) local value local found = false level = (level or 1) + 1 print (level) -- try local variables for i = 1, math.huge do local n, v = debug.getlocal(level, i) if not n then break end if n == name then value = v found = true end end if found then return value end -- try non-local varibles local func = debug.getinfo(level, "f").func for i = 1 , math.huge do local n , v = debug.getupvalue(func, i) if not n then break end if n == name then break return v end end -- if name == "_ENV" then -- print("Can not find varible @_ENV") -- return -- end -- not found; get value from the environment local env = getvarvalue("_ENV", level) if not env then return end return env[name] end hello = 1 print(getvarvalue(hello, 0))
我尝试查看全局变量hello的信息,但是,这里会陷入无限的递归。。。。
getvarvalue是照着《Programming In Lua》第三版写的。
刚开始的时候我照着第二版的《Programming In Lua》写,但是发现有问题。新版本的Lua不再提供setfenv函数,就去找第三版的书看,现在发现第三版的也有问题。
如果有高手路过,对这个问题有了解,希望能够交流指教
相关文章推荐
- Lua笔记
- lua协程的使用列子分析
- C++调用LUA函数,可变参模板实现
- LeetCode150 Evaluate Reverse Polish Notation java题解
- 读取xml生成lua测试代码
- Lua学习之类型与值
- Lua学习之类型与值
- Lua学习笔记之开始
- lua userdata
- lua垃圾回收机制
- Lua中使用二维数组实例
- lua学习--记录(2)
- Lua math.fmod使用时的小数问题
- .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用
- Ubuntu14.04 安装lua5.3
- Wireshark Lua插件学习心得
- Lua的string学习笔记
- Lua 与C/C++ 交互系列:动态注册枚举enum到Lua Code中,在运行时在Lua Code中获取内省信息
- LUA常见库和工具
- Lua 与C/C++ 交互系列:注册枚举enum到Lua Code中