lua中chunk和block之间的区别是什么

时间:2012-08-25 06:47:43

标签: lua

lua中chunk和block之间的区别是什么?我无法理解什么是大块!

4 个答案:

答案 0 :(得分:6)

块是一个可独立执行的语句序列。块只是一系列语句。区别在于块可以独立于其他块执行。

所有块都是块(语句序列),但并非所有块都是块。

一个块基本上是一个Lua 函数;你可以用一些参数调用它,它将返回0或更多的值。这就是我所说的“独立可执行”:块中的语句将按顺序执行。但是一旦你退出一个块,你接下来执行的块就取决于你。

答案 1 :(得分:5)

此处已被询问并致辞:http://lua-users.org/lists/lua-l/2012-06/threads.html#00723

从5.2手册:

  

Lua的执行单位称为块。从语法上讲,块只是一个块:chunk ::= block

罗伯托的口中:

  

块是块的事实并不意味着任何块都是块   块。块不嵌套(不像块)。块是最外面的块   你喂“加载”。

答案 2 :(得分:3)

块可以是一大块代码。但是,块通常表示零个或多个语句属于(例如)if语句或函数。

来自official Lua reference

的引用
  

[...]一个块是一个语句列表;从语法上讲,块与块[...]

相同

如果你看the grammar of Lua,你会发现它们是相同的:

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

block ::= chunk

答案 3 :(得分:1)

Block是块的子部分,它们可能在代码示例02中有些相同: 例如01:

 if condition1 then
        block1
    elseif condition2 then
        block2
    elseif condition3 then
        block3
    else
        block4
    end

在这里,我们有一个从第一个开始的块     如果condition1然后到最后结束     但是这个代码有四个块,每个条件都有单独的块。 这个例子有一个块和一个四个街区。

示例02:

   /////////////////////////// 01 //////////////////////
for variable = beginning, end, step do
        block
    end
   /////////////////////////// 02 //////////////////////
function Name()
        block
    end

   /////////////////////////// 03 //////////////////////
 if condition then
        block
    end

在示例02 chunk&块是相同的但总是不一样。 请自己读一读。

http://www.lua.org/manual/2.5/manual.html

4.4.1 - 阻止

块是一个语句列表,按顺序执行。任何语句都可以选择后跟分号:

阻止:= {stat sc} [ret] sc:= [';']

2 - 环境和大块

Lua的执行单位称为块。块的语法是:

chunk:= {stat |功能} [转]

是否有用?????