【发布时间】:2015-11-29 02:37:13
【问题描述】:
我正在尝试控制交互环境。这是我的尝试:
home: lua
Lua 5.0.3 Copyright (C) 1994-2006 Tecgraf, PUC-Rio
> for n in pairs(_G) do io.write(n) end
stringxpcallLUA_PATHtostringgcinfoloadlibosunpackrequiregetfenvsetmetatablenext_TRACEBACKasserttonumberiorawequalcollectgarbagegetmetatable_LOADEDrawsetmathLUA_CPATHpcalldebug__powtypetablecoroutineprint_Gnewproxyrawgetloadstring_VERSIONdofilesetfenvpairsipairserrorloadfile>
> G=_G
> _G={}
> setmetatable(_G,{__index=G,__newindex=function() print("nope") end})
> for n in pairs(_G) do io.write(n) end
> x=3
>
我希望在命令“x=3”之后看到“nope”。然而,它通过了。 _G 不是空的吗,_G 的任何访问/更新都会经过定义的元方法?
【问题讨论】:
-
顺便说一句,你为什么使用 lua 5.0?那是十年前的事了!使用 lua 5.3...