快速掌握Lua 5.3 —— 让我们开始吧

快速掌握Lua 5.3 —— 让我们开始吧

Q:什么样的文件是Lua脚本?

A:存储了使用Lua语言编写的脚本的文件都可以称作Lua脚本,但一般为了一眼就能看出来,将文件的后缀命名为.lua。

Q:如何启动Lua?

A:
1、命令行中输入lua,这样会启动Lua的“stand-alone interpreter”模式,可以像使用shell一样使用它。
2、将Lua脚本存入“*.lua”文件中,命令行中使用lua *.lua执行脚本。

Q:Hello World?

A:print("Hello World")。即可以在“stand-alone interpreter”模式中执行,也可以将其写入文件执行。

Q:如何退出Lua的“stand-alone interpreter”模式?

A:优雅一些的做法是Ctrl-D或者os.exit();暴力一些的做法可以是Ctrl-C

Q:什么是“Chunks”?

A:一段代码,就好像C语言中“{}”括起来的代码段一样。

Q:在Lua的“stand-alone interpreter”模式下,为什么有时候提示符变成了“>>”?

A:Lua交互模式的默认提示符是“>”,你每按一次回车,lua都会把你之前输入的东西认为是一个chunk。但如果Lua判断出你输入的东西不是一个完整的chunk,则提示符会变为“>>”用以提示你将未完成的chunk输入完整。

Q:lua -l a.lua -l b.lua

A:“-l”选项可以将指定文件中的代码加载至当前脚本并执行(实际上通过require实现)。如问题中的例子,可以理解为先执行a.lua中的代码,再执行b.lua中的代码。

Q:lua -i b.lua

A:“-i”选项代表在执行完指定的脚本后立即进入“stand-alone interpreter”模式。

Q:dofile("a.lua")

A:加载指定文件中的代码并执行。

Q:如何使用变量?

A:Lua中的变量无需声明,直接赋个值就可以使用,默认都是全局的(想创建局部变量需要local关键字)。甚至于使用未初始化的变量也不会报错,得到的值是nil

> print(x)
nil
> x = 9
> print(x)
9

Q:变量的命名规范?

A:由字母,数字,下划线组成,不能以数字开始。以下划线开头的并且全是大写的变量名很可能是保留变量,小心使用。

Q:Lua中的关键字?

A:

and break do else elseif end false for function if in
local nil not or repeat return then true until while

Q:是否对大小写敏感?

A:是。

Q:如何注释代码?

A:使用--注释一行代码;使用--[[ ]]注释一段代码。

Q:有的lua脚本中第一行类似于#!/usr/local/bin/lua

A:指定脚本解释器,就好像shell的一样。指定了脚本解释器的lua脚本可以直接被调用,而无需使用lua命令。

Q:lua -e 'print("Hello World!")'"

A:”-e”选项允许在命令行上直接执行脚本。

Q:如何向lua脚本传递参数?

A:lua脚本接收的参数保存在一个名为arg的的变量中,它实际是一个”table”,使用方式类似于C语言中的数组。

-- a.lua文件的内容。print("The first arg is:", arg[1])print("The second arg is:", arg[2])print("The third arg is:", arg[3])

prompt> lua a.lua 5 7 9
The first arg is: 5
The second arg is: 7
The third arg is: 9

附加:

1、Lua中每行的结尾可以不写分号,甚至同一行的两条语句之间都可以不写。不过按照惯例还是写比较好,代码也更美观。
2、更改“_PROMPT”变量的值可以更改Lua的“stand-alone interpreter”模式下的默认提示符:

> _PROMPT=’my_prompt>’
my_prompt>

3、想要删除一个全局变量,可以将其值赋为nil,Lua会回收其所占的内存空间。
4、变量名字中的字母字母不仅可以是英文字母,还可以是你所使用的语言中的字母。不过不建议这么写,因为在不支持这种语言的机器上你的程序将无法运行。
5、lua的变量类型是动态的,不用指定类型,你给它什么类型的值,他就是什么类型的。
6、Lua中所有未初始化的变量的值都是nil

推荐阅读