第一版是针对 Lua 5.0 编写的。虽然在很大程度上仍然适用于后续版本,但也有一些差异。
第四版针对 Lua 5.3,可在 亚马逊 和其他书店购买。
购买本书,您还将帮助 支持 Lua 项目。
Lua 中的编程 Lua | ||
第一部分。语言 第 1 章。入门 |
独立解释器(也称为 lua.c
,因为这是其源文件,或者称为 lua
,因为这是其可执行文件)是一个小程序,允许直接使用 Lua。本节介绍其主要选项。
当解释器加载文件时,如果该行的开头是数字符号 (`#
´),它将忽略该行的开头。该特性允许在 Unix 系统中将 Lua 用作脚本解释器。如果您以类似于以下内容的方式启动程序
#!/usr/local/bin/lua(假设独立解释器位于
/usr/local/bin
),或
#!/usr/bin/env lua那么您可以直接调用程序,而无需显式调用 Lua 解释器。
lua
的用法是
lua [options] [script [args]]所有内容都是可选的。正如我们已经看到的那样,当我们在没有参数的情况下调用
lua
时,解释器将进入交互模式。
-e
选项允许我们在命令行中直接输入代码。例如,
prompt> lua -e "print(math.sin(12))" --> -0.53657291800043(Unix 需要双引号来阻止 shell 解释括号。)正如我们之前看到的,
-l
加载文件,-i
在运行其他参数后进入交互模式。因此,例如,调用
prompt> lua -i -l a.lua -e "x = 10"将加载文件
a.lua
,然后执行赋值 x = 10
,最后显示一个提示符进行交互。
只要定义了全局变量 _PROMPT
,lua
在交互时就会使用其值作为提示符。因此,您可以通过类似于以下内容的调用来更改提示符
prompt> lua -i -e "_PROMPT=' lua> '" lua>我们假设
"prompt"
是系统的提示符。在该示例中,外部引号阻止 shell 解释内部引号,而内部引号由 Lua 解释。更准确地说,Lua 接收以下命令来运行
_PROMPT=' lua> '它将字符串
" lua> "
赋值给全局变量 _PROMPT
。
在开始运行参数之前,lua
会查找名为 LUA_INIT
的环境变量。如果存在这样的变量,并且其内容为 @
filename,那么 lua
将加载给定的文件。如果定义了 LUA_INIT
但其开头不是 `@
´,那么 lua
假设它包含 Lua 代码并运行它。在配置独立解释器时,此变量为您提供了强大的功能,因为您可以在配置中充分利用 Lua 的强大功能。您可以预加载包,更改提示符和路径,定义自己的函数,重命名或删除函数,等等。
主脚本可以在全局变量 arg
中检索其参数。在类似这样的调用中
prompt> lua script a b c
lua
在运行脚本之前创建包含所有命令行参数的表 arg
。脚本名称进入索引 0;其第一个参数(示例中的 a
)进入索引 1,依此类推。可能的选项进入负索引,因为它们出现在脚本之前。例如,在调用中
prompt> lua -e "sin=math.sin" script a b
lua
如下收集参数
arg[-3] = "lua" arg[-2] = "-e" arg[-1] = "sin=math.sin" arg[0] = "script" arg[1] = "a" arg[2] = "b"通常,脚本仅使用正索引(示例中的
arg[1]
和 arg[2]
)。
版权所有 © 2003–2004 Roberto Ierusalimschy。保留所有权利。 |