2016-01-11 7 views
5

C言語などのプログラミング言語では、匿名コードブロックを作成して変数の範囲をブロック内に限定して、Luaで同じことを行うことができますか?Luaで匿名コードブロックを作成できますか?

もしそうなら、次のCコードに相当するLuaは何でしょうか?

void function() 
{ 
    { 
     int i = 0; 
     i = i + 1; 
    } 

    { 
     int i = 10; 
     i = i + 1; 
    } 
} 
+1

を出力し、すべてのブロックが、とにかく、匿名です。いくつかの[関数定義](http://www.lua.org/manual/5.3/manual.html#3.4.11)の簡潔な構文は、関数定義を代入と組み合わせる単なる文法的な方法です。 –

答えて

6

do...endを使用します。 manualから:

ブロックは明示的に単一の文を生成するために区切ることができます。

stat ::= do block end 

明示的なブロック変数 宣言のスコープを制御するのに有用です。明示的なブロックはまた、時にはあなたがキーワードdo & endでブロックを区切ることができ、他のブロックの途中で

function fn() 
    do 
     local i = 0 
     i = i + 1 
    end 
    do 
     local i = 10 
     i = i + 1 
    end 
end 
5

returnbreakステートメントを追加するために使用されています。

参考:次のようにProgramming in Lua

0

匿名関数を実行しているが起こる: (function(a,b) print(a+b) end)(1,4)

それはLuaのでは5

関連する問題