1.1 Chunks

Chunk是一系列语句,Lua执行的每一块语句,比如一个文件或者交互模式下的每一行都是一个Chunk

每个语句结尾的分号(;)是可选的,但如果同一行有多个语句最好用;分开

a = 1   b = a*2    -- ugly, but valid

一个Chunk可以是一个语句,也可以是一系列语句的组合,还可以是函数,Chunk可以很大,在Lua中几个MByteChunk是很常见的。

你还可以以交互模式运行Lua,不带参数运行Lua:

Lua 5.0  Copyright © 1994-2003 Tecgraf, PUC-Rio

你键入的每个命令(比如:"Hello World")在你键入回车之后立即被执行,键入文件结束符可以退出交互模式(Ctrl-D in Unix, Ctrl-Z in DOS/Windows),或者调用OS库的os.exit()函数也可以退出。

在交互模式下,Lua通常把每一个行当作一个Chunk,但如果Lua一行不是一个完整的Chunk时,他会等待继续输入直到得到一个完整的Chunk.Lua等待续行时,显示不同的提示符(一般是>>.

可以通过指定参数让Lua执行一系列Chunk。例如:假定一个文件a内有单个语句x=1;另一个文件b有语句print(x)

prompt> lua -la -lb

命令首先在一个Chunk内先运行a然后运行b。(注意:-l选项会调用require,将会在指定的目录下搜索文件,如果环境变量没有设好,上面的命令可能不能正确运行。我们将在8.1节详细更详细的讨论the require function

-i选项要求Lua运行指定Chunk后进入交互模式.

prompt> lua -i -la -lb

将在一个Chunk内先运行a然后运行b,最后直接进入交互模式。

另一个连接外部Chunk的方式是使用dofile函数,dofile函数加载文件并执行它.假设有一个文件:

-- file 'lib1.lua'

 

function norm (x, y)

    local n2 = x^2 + y^2

    return math.sqrt(n2)

end

 

function twice (x)

    return 2*x

end

在交互模式下:

> dofile("lib1.lua")     -- load your library

> n = norm(3.4, 1.0)

> print(twice(n))        --> 7.0880180586677

-idofile在调试或者测试Lua代码时是很方便的。


相关链接:
lua程序设计目录 - 中国lua开发者 - lua论坛