setfenv()
Luaをからに切り替えることの大きな問題は何_ENV
ですか?
さまざまな「What'sNew」ソースで、この動きはLuaバージョン5.1と5.2の間の最も重要な変更の1つとして言及されています。
ただし、PILやその他の場所で示されている例は、次のようにトリミングできます。
-- Lua 5.1 -- Lua 5.2
function myfunc() function myfunc()
setfenv(1, {}) _ENV = {}
end end
これまでのところ、ここで得たのは、5つのキーストロークを節約したことです。(C側と大差ないと思います。)また、うまくいけば、関数の内側からしかアクセスできないのsetfenv()
に対し、関数の外側と内側の両方から使用できます。_ENV
(もちろん、C APIを使用する場合、アップバリューに直接アクセスできます。)私が書いたものから、5.2アプローチははるかに柔軟性が低いようです。
彼のTheNoveltiesofLua 5.2で、Robertoは次のように書いています。
「糖衣構文であるため、古い環境よりもはるかに単純です」
シンプルさはどこにありますか?私は何を見落としましたか?
このトピックは、5.2ユーザーマニュアルに記載されているよりも適切に扱う価値があると思います。