luaのチャンクとブロックの違いは何ですか?チャンクって何なのかわからない!!!
4 に答える
チャンクは、独立して実行可能なステートメントのシーケンスです。ブロックは単なる一連のステートメントです。違いは、チャンクを他のチャンクとは独立して実行できることです。
すべてのチャンクはブロック(ステートメントのシーケンス)ですが、すべてのブロックがチャンクであるとは限りません。
チャンクは基本的にLua関数です; いくつかのパラメータを使用して呼び出すことができ、0個以上の値を返します。これが「独立して実行可能」という意味です。チャンク内のステートメントは順番に実行されます。ただし、チャンクを終了すると、次に実行するチャンクはあなた次第です。
ここで質問され、対処されました:http: //lua-users.org/lists/lua-l/2012-06/threads.html#00723
5.2マニュアルから:
Luaの実行単位はチャンクと呼ばれます。構文的には、チャンクは単なるブロックです。
chunk ::= block
ロベルトの口から:
チャンクがブロックであるという事実は、任意のブロックがチャンクであることを意味するものではありません。チャンクはネストしません(ブロックとは異なります)。チャンクは、「ロード」するためにフィードする最も外側のブロックです。
ブロックはコードのチャンクにすることができます。if
ただし、ブロックとは通常、ステートメントや関数などに属する0個以上のステートメントを意味します。
Luaの公式リファレンスからの引用:
[...]ブロックはステートメントのリストです。構文的には、ブロックはチャンクと同じです[...]
Luaの文法を見ると、同じであることがわかります。
chunk ::= {stat [`;´]} [laststat [`;´]]
block ::= chunk
ブロックはチャンクのサブパートであり、コード例02と同じ場合があります。例:01:
if condition1 then
block1
elseif condition2 then
block2
elseif condition3 then
block3
else
block4
end
ここでは、
if condition1から最後まで1つのチャンクがありますが、このコードには4つのブロックがあり、すべての条件に個別のブロックがあります。この例には、1つのチャンクと4つのブロックがあります。
例02:
/////////////////////////// 01 //////////////////////
for variable = beginning, end, step do
block
end
/////////////////////////// 02 //////////////////////
function Name()
block
end
/////////////////////////// 03 //////////////////////
if condition then
block
end
例02のチャンクとブロックは同じですが、常に同じではありません。ぜひお読みください。
http://www.lua.org/manual/2.5/manual.html
4.4.1-ブロック
ブロックは、順番に実行されるステートメントのリストです。オプションで、任意のステートメントの後にセミコロンを続けることができます。
ブロック:= {stat sc} [ret] sc:= [';']
2-環境とチャンク
Luaの実行単位はチャンクと呼ばれます。チャンクの構文は次のとおりです。
チャンク:= {stat | 関数}[ret]
それは役に立ちますか?????