基本语法
Lua 学起来非常简单。现在,让我们开始创建我们的第一个 Lua 程序吧!
第一个 Lua 程序
Lua 提供交互式编程模式。在这个模式下,你可以一条一条地输入命令,然后立即就可以得到结果。你可以在 shell 中使用 lua -i 或者 lua 命令启动。输入命令后,按下回车键,就启动了交互模式,显示如下:
1 2 3 4 5 6 7
| $ lua -i $ Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio quit to end; cd, dir and edit also available ```
你可以使用如下命令打印输出:
|
$> print(“test”)
‘test’
1 2 3 4 5 6 7
| ## 默认模式编辑
使用 Lua 文件做为解释器的参数启动解释器,然后开始执行文件直到文件结束。当脚本执行结束后,解释器就不在活跃了。 让我们写一个简单的 Lua 程序。所有的 Lua 文件都扩展名都是`.lua`。因此,将下面的源代码放到 test.lua 文件中。
|
print(“test”)
1 2 3
| 假如你已经设置好 Lua 程序的环境,用下面的命令运行程序:
|
$ lua test.lua
test
1 2 3
| 让我们尝试使用另外的方式运行 Lua 程序。下面是修改后的 test.lua 文件:
|
#!/usr/local/bin/lua
print(“test”)
1 2 3
| 这里,我们假设你的 Lua 解释器程序在 /usr/local/bin/lua 目录下。test.lua 文件中第一行由于以 # 开始而被解释器忽略,运行这个程序可以得到如下的结果:
|
$ chmod a+rx test.lua
$./test.lua
test
1 2 3 4 5 6 7
| 接下来让我们看一下 Lua 程序的基本结构。这样,你可以更容易理解 Lua 编程语言的基本结构单元。
## Lua 中的符号
Lua 程序是由大量的符号组成的。这些符号可以分为关键字、标识符、常量、字符串常量几类。例如,下面的 Lua 语句中包含三个符号:
|
io.write(“Hello world, from “,_VERSION,”!\n”)
io.write
(
“Hello world, from “,_VERSION,”!\n”
)
1 2 3 4 5
| ### 注释
注释就是 Lua 程序中的帮助文档,Lua 解释器会自动忽略它们。所有注释都以 --[[ 开始,并以 --]]结束。如下所示:
|
–[[ my first program in Lua –]]
1 2 3 4 5 6
| ### 标识符
Lua 中标识符是识别变量、函数或者其它用户自定义项的名字。标符识总是以字母或者下划线开始,其后可以是零个或多个字母、下划线或数字。 Lua 标识符中不允许出现任何标点符号,比如,@,$ 或者 %。Lua 是大小写敏感的语言,因此 Manpower 和 manpower 是 Lua 中两个不同的标识符。下面所列的是一些合法标识符的例子。
|
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| ### 关键字
下面列表中所示的是 Lua 中一小部分保留字。这些保留字不能用作常量、变量以及任何标识符的名字。
<table> <tr> <td>and</td> <td>break</td> <td>do</td> <td>else</td> </tr> <tr> <td>elseif</td> <td>end</td> <td>false</td> <td>for</td> </tr> <tr> <td>function</td> <td>if</td> <td>in</td> <td>local</td> </tr> <tr> <td>nil</td> <td>not</td> <td>or</td> <td>repeat</td> </tr> <tr> <td>return</td> <td>then</td> <td>true</td> <td>until</td> </tr> <tr> <td>while</td> <td></td> <td></td> <td></td> </tr> </table>
### Lua 中的空白符
如果 Lua 程序中某一行只包含空格或者注释,那么这样的一行被称之为空行。 Lua 解释器将完全忽略这一行。 在 Lua 中,空白是用来描述空格、制表符、换行符和注释的术语。空白符用于将语句中的一部分与其它部分区分开,使得解释器可以语句中的一个元素,比如 int,何处结束,以及另一个元素从何处开始。因此,在下面的语句中:
|
local age
1 2 3
| 在 local 与 age 之间至少有一个空白符(通常是空格),这个空白符使得解释器可以将 local 与 age 区分开。另一方面,在下面的语句中:
|
fruit = apples + oranges –get the total fruit
```
fruit 与 = 之间以及 = 与 apples 之间的空白符都是可以没有的。但是为了程序的可读性目的,建议你在它们之间使用空白符。