上位値とクロージャが分かりません。あとLuaからCの変数にアクセスする方法も分かりません。

Last-modified: 2006-03-22 (水) 16:54:24

&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
ありがとう。
よくわかりました。};