ルアでクォート関数を作成しようとしています。したがって、引数を文字列として使用できますが、引用符を使用せずに、またはいくつかの環境でそれらの引数にアクセスできます。多いので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
上の第二のコメント、私はそれを実行中のように:どのような私、そう
---------- Capture Output ----------
q(uno) nil
> Terminated with exit code 0.
:
q = test()
w("q(uno)" , q(uno))
それも__indexのメタメソッドを呼び出すことはありません。間違ってる?
スタート賢明な変数名を使用することでは、書式設定、および自己誘発間接指向性が低下します。 – Oka
@oka私が作ることができるほどコードを読みやすく編集しました。一度それがグローバルに適用されると、はるかに読みやすくなります。 – warspyking
@warspyking編集内容が元のコードと明確に矛盾しています。 [this](https://repl.it/EIW1)のようなオリジナルを書き直すことはできますが、間違った順序で物事を見ようとしている点でそれはまだ無意味です。下の私の答えを見てください。 – Oka