はLUA

2012-04-16 7 views
9

に関数パラメータのコードブロックを評価し、私はどのようにタイトルの質問を本当にわからなかったが、次のLUAコードを検討しますクロージャを返します。無名関数を評価する方法はありますか?追加の括弧でラムダを取り入れることができるスキームのように?私が知っているもちろんはLUA

((lambda()(display "Hello World"))) 

、私は事前に関数を定義し、後でそれを呼び出すが、これはLUAで可能である場合、私はちょうど興味があった可能性があります。すべての返信をお寄せいただきありがとうございます。

答えて

14

関数定義をカッコで囲み、その後に()を追加して呼び出す必要があります。 Luaのインタプリタでこれを置く:

> print((function() 
    s="" 
    for i=1,10 do 
     s=s..tostring(i) 
    end 
    return s 
    end)()) 

することは、これはあなたが望む世界的行動である場合は、最も簡単な解決策は、それが渡された任意の機能を評価するように印刷をフックすることであろう次の出力

> 12345678910 
+0

ありがとう、私は同様の考えを持っていたが、私は角括弧内の関数をラップしていない。スキームより少し醜いですが、少なくともそれは動作します:D – Moe

4

を与えますそれ。そうすれば、単にコールサイトをlambdaとして残すことができます。

+0

可能性をinteressting、私はちょうどルアを学んでいた、あなたがそれを行うことができるか分からなかった。私はそれを念頭に置くよ – Moe