4

luaのチャンクとブロックの違いは何ですか?チャンクって何なのかわからない!!!

4

4 に答える 4

6

チャンクは、独立して実行可能なステートメントのシーケンスです。ブロックは単なる一連のステートメントです。違いは、チャンクを他のチャンクとは独立して実行できることです。

すべてのチャンクはブロック(ステートメントのシーケンス)ですが、すべてのブロックがチャンクであるとは限りません。

チャンクは基本的にLua関数です; いくつかのパラメータを使用して呼び出すことができ、0個以上の値を返します。これが「独立して実行可能」という意味です。チャンク内のステートメントは順番に実行されます。ただし、チャンクを終了すると、次に実行するチャンクはあなた次第です。

于 2012-08-25T10:39:39.183 に答える
5

ここで質問され、対処されました:http: //lua-users.org/lists/lua-l/2012-06/threads.html#00723

5.2マニュアルから:

Luaの実行単位はチャンクと呼ばれます。構文的には、チャンクは単なるブロックです。chunk ::= block

ロベルトの口から:

チャンクがブロックであるという事実は、任意のブロックがチャンクであることを意味するものではありません。チャンクはネストしません(ブロックとは異なります)。チャンクは、「ロード」するためにフィードする最も外側のブロックです。

于 2012-08-25T18:04:20.450 に答える
3

ブロックはコードのチャンクにすることができます。ifただし、ブロックとは通常、ステートメントや関数などに属する0個以上のステートメントを意味します。

Luaの公式リファレンスからの引用:

[...]ブロックはステートメントのリストです。構文的には、ブロックはチャンクと同じです[...]

Luaの文法を見ると、同じであることがわかります。

chunk ::= {stat [`;´]} [laststat [`;´]]

block ::= chunk
于 2012-08-25T07:04:05.297 に答える
1

ブロックはチャンクのサブパートであり、コード例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]

それは役に立ちますか?????

于 2012-08-25T06:59:30.360 に答える