Chapter 1 GettingStarted
hello.lua
老规矩,hello world
对于hello程序,只需要新建一个文件并输入一行代码:
print("hello world!")
之后将文件保存,如hello.lua。再运行lua解释器即可:
lua hello.lua
lua解释器
lua有一种交互模式,我们可以直接输入lua,将进入lua交互模式,我们可以在该模式下直接输入lua代码,输入Enter让它执行输入。要退出交互模式,只要输入一个eof控制字符即可。
在交互模式下,它会自动检测输入是否是一个完整的程序块,如果不是,比如输入了function但没有输入end,那么解释器暂不执行而是等待程序被补完。(若是多行代码,那么建议放入文件中)
lua解释器可以带命令,如-i :
lua-i filename
表示执行完文件后进入交互模式。
另一种加载文件的方式是dofile,我们可以在交互模式下使用dofile函数来加载文件。
lua
>dofile(filename)
如果我们要测试一个文件,那我们可以在一个窗口编写这个文件的代码,在另一个窗口中运行lua解释器。
lua还有其它几个选项:
-e可以直接在命令行中使用代码
lua-e "print("hello")"
-l可用于加载库文件
lua-i -l a -e "X = 10" -- 加载了库文件a
我们可以像使用可执行程序一样使用Lua文件,参见——像使用执行文件一样使用Lua文件
只要定义一个_PROMPT的全局变量,就可以改变交互界面的提示符,新提示符会是_PROMPT的值。
交互模式下,要打印任何表达式的值,可以用=开头(注意>符号是提示符):
>= 10
在解释器执行其参数前,会先查找一个名为LUA_INIT的环境变量,如果找到了这个变量,并且它以@开头,那么lua会把@后面的内容当成文件名并执行这个文件。我们可以利用它很灵活地在解释开始前加载某些文件
解释器在运行脚本前,会用所有的命令行参数创建一个名为“arg”的table(arg是全局变量),我们可以通过查看这个变量来检索脚本的启动参数:
lua-e "print("hello")" script a b
那么arg中的值大致如下:
arg[-3]= "lua"
arg[-2]= "-e"
arg[-1]= "print("hello")"
arg[0]= "script"
arg[1]= "a"
arg[2]= "b"
注意脚本名称位于0位置,之前的参数是负数,之后的为正数。通常只使用正数索引
在lua5.1中,一个脚本还可以通过“变长参数语法”来检索其参数,在脚本主体中,表达式“...”表示所有传递给脚本的参数。
规范
lua语句之间不需要分隔符(甚至于同一行中),当然,使用分号来分隔也没什么问题:
a= 1
b= a * 2
与
a= b b = a*2
完全等价,虽然不推荐后一种写法。
命名规范:任意数字,下划线,字母组成,但不能以数字开头,对于下划线后跟多个大写字母的名字,lua将它们用作特殊用途。对于单下划线_,lua用它作为哑变量(Dummy Variable)。
上面说的字母,在不同的设置下可以是不同的,它依赖于区域设置(Locale),如果设置了一个正确的区域,那么可以使用那个区域特有的字符,不过这个造成问题,如果有一台机器不支持这些字符,那么gg。
lua保留字:
and break do else elseif
end false for function if
in locale nil not or
repeat return then true until
while
lua是有大小写之分的,and是保留字,但And可用作标识符。
lua中的单行注释以—开头,多行注释被—[[ ]]括起。多行注释常用技巧:
--[[
code
--]]
这样的话,如果我们不想把它们注释掉,只要将—[[改为---[[即可,这样第一行和最后一行都成了注释,代码就成可用的啦。
全局变量不需声明,未初始化则默认初始化为nil,如果想要删除全局变量,可以手动把它赋为nil