Lua中的chunk和block有什么区别?

5
Lua中chunk和block的区别是什么?我不理解什么是chunk!!!
4个回答

6

一个块是一系列可独立执行的语句。而一个区块仅仅是一系列语句。它们之间的不同在于,一个块可以独立于其他块执行。

所有的块都是由一系列语句组成的,但并非所有的块都是区块。

一个块基本上就是 Lua 的一个函数;你可以使用一些参数调用它,并且它将返回 0 或更多个值。这就是我所说的“可独立执行”的意思:块内的语句将按顺序执行。但是一旦你退出了一个块,接下来要执行哪个块就由你决定了。


6

已在此处提出并解决:http://lua-users.org/lists/lua-l/2012-06/threads.html#00723

来自5.2手册:

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

来自Roberto亲口所说:

一个块是一个块,并不意味着任何块都是一个块。块不嵌套(不像块)。块是您提供给“load”函数的最外层块。


3

一个块可以是一段代码。然而,块通常指属于例如if语句或函数的零个或多个语句。

来自官方Lua参考的引用:

[...] 块是语句列表;在语法上,块与块相同 [...]

如果您查看Lua语法, 您会发现它们是相同的:

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

block ::= chunk

1

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

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

这里我们有一个代码块,从条件1开始到最后结束。
但是这段代码有四个块,每个条件都有单独的块。

例子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 - 块

块是一系列按顺序执行的语句。任何语句都可以选择性地在末尾加上分号:

block := {stat sc} [ret] sc := [';']

2 - 环境和代码块

Lua 的执行单位被称为代码块。代码块的语法如下:

chunk := {stat | function} [ret]

这对你有帮助吗?


@booirror 如果这个回答有用的话,请不要忘记将其选为答案并点赞。 - syed Ahsan Jaffri
是的,块构成了块。你这么认为吗? - booirror
是的,我认为块由单个或多个单一结构的块组成,通常以end结束。 - syed Ahsan Jaffri
3
它们是相同的。你正在链接到1997年的Lua文档!那已经超过15年了。请阅读我发布的参考文献,它来自Lua 5.1,并明确说明它们实际上是相同的东西。 - Bart Kiers
@BartKiers 感谢您的更新。 - syed Ahsan Jaffri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接