プログラミング言語 Lua  その3at TECH
プログラミング言語 Lua  その3 - 暇つぶし2ch127:118
07/02/22 00:27:58
>>126
いえいえ半分愚痴なんで。
たとえば>>118を以下の様に書き換えると
a=456
function f1(e)
 setfenv(1,e) ;print(a) -- 123が表示
end

function f2(f)
 --ここからシンタックスシュガー
 local org_env=getfenv(1)
 local local_env={}
 setfenv(1,setmetatable(local_env,{__index=org_env}))
 --ここまでシンタックスシュガー

 -- aはローカル
 a=124
 f(local_env)

 -- print($a) グローバルなaを表示 =>
 print(org_env["a"]) -- 456が表示
end
f2(f1)
print(a) -- 456が表示

関数先頭でローカル環境設定して
むしろlocalが指定されていないときをlocal変数
と解釈し、Rubyみたく$a見たいに記述された時を
グローバル変数と解釈するほうが安全なようなきがする。
関数内でlocal宣言し忘れてうっかりグローバル汚す
心配もないし。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch