【发布时间】:2016-10-28 08:22:22
【问题描述】:
我正在尝试在 lua 中创建一个引号函数,因此我可以将参数用作字符串但不带引号或在某些环境中访问它们。很像this question的第二条评论
w = print
function test()
local function _ix( _ , k )
w( " _ix \\ " , _ , k )
local v = rawget( _G , k )
w( " <-- " , k )
return k
end
local _ = setmetatable( {} , { __index = _ix } )
local function q( _ ) return _ end
q = setfenv( q , _ )
return q
end
所以,当我运行它时:
q = test()
w( "q( uno )" , q( uno ) )
它甚至不调用 __index 元方法:
---------- Capture Output ----------
q( uno ) nil
> Terminated with exit code 0.
那么,我做错了什么?
【问题讨论】:
-
从使用合理的变量名、格式和较少的自诱导间接开始。
-
@oka 我做了一个编辑,使代码尽可能地可读。一旦它在全球范围内应用,它应该更容易阅读。
-
@warspyking 您的编辑与原始代码有明显冲突。您可以像this 一样重写原始内容,但这仍然是荒谬的,因为它试图以错误的顺序查找内容。请参阅下面的答案。
标签: lua