&color(White){214 名前:デフォルトの名無しさん[sage] 投稿日:04/02/02(月) 03:29
上位値とクロージャが分かりません。
あとLuaからCの変数にアクセスする方法も分かりません。
216 名前:デフォルトの名無しさん[sage] 投稿日:04/02/06(金) 11:50
214
上位値とクロージャを。自分の変数を持つ関数かな?
schemeとかocamlとかperlとかにはあった気がする。lispが発祥だとかperlの本にあったなぁ。
- newgreeting = function(a) --a:上位値
return function (b); print(a..", "..b..".") end --クロージャ
end
gr1 = newgreeting("Good morning");gr1("Emily");gr1("Mike")
gr2 = newgreeting("See you");gr2("Emily");gr2("Mike")
- もうひとつ 上位値の変更
newcounter = function ()
local cnt=0 --上位値
return function ()
cnt = cnt+1
return cnt
end
end
cnt_a = newcounter()
cnt_b = newcounter()
print(cnt_a())
print(cnt_a(), cnt_b())
print(cnt_a())
print(cnt_a(), cnt_b())
print(cnt_a())
print(cnt_a(), cnt_b())
結果は省略
217 名前:デフォルトの名無しさん[sage] 投稿日:04/02/06(金) 17:21
216
すごい
や・・やるなぁ・・・。
218 名前:デフォルトの名無しさん[sage] 投稿日:04/02/06(金) 17:50
216
ありがとう。
よくわかりました。};