Lua基本语法
基本语法
Lua 学起来非常简单。现在,让我们开始创建我们的第一个 Lua 程序吧!
第一个 Lua 程序
Lua 提供交互式编程模式。在这个模式下,你可以一条一条地输入命令,然后立即就可以得到结果。你可以在 shell 中使用 lua -i 或者 lua 命令启动。输入命令后,按下回车键,就启动了交互模式,显示如下:
$ 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'
默认模式编辑
使用 Lua 文件做为解释器的参数启动解释器,然后开始执行文件直到文件结束。当脚本执行结束后,解释器就不在活跃了。
让我们写一个简单的 Lua 程序。所有的 Lua 文件都扩展名都是.lua
。因此,将下面的源代码放到 test.lua 文件中。
print("test")
假如你已经设置好 Lua 程序的环境,用下面的命令运行程序:
$ lua test.lua
我们会得到如下的输出结果:
test
让我们尝试使用另外的方式运行 Lua 程序。下面是修改后的 test.lua 文件:
\#!/usr/local/bin/lua
print("test")
这里,我们假设你的 Lua 解释器程序在 /usr/local/bin/lua 目录下。test.lua 文件中第一行由于以 # 开始而被解释器忽略,运行这个程序可以得到如下的结果:
$ chmod a+rx test.lua
$./test.lua
我们会得到如下的的输出结果:
test
接下来让我们看一下 Lua 程序的基本结构。这样,你可以更容易理解 Lua 编程语言的基本结构单元。
Lua 中的符号
Lua 程序是由大量的符号组成的。这些符号可以分为关键字、标识符、常量、字符串常量几类。例如,下面的 Lua 语句中包含三个符号:
io.write("Hello world, from ",_VERSION,"!\n")
这三个符号分别是:
io.write
(
"Hello world, from ",_VERSION,"!\n"
)
注释
注释就是 Lua 程序中的帮助文档,Lua 解释器会自动忽略它们。所有注释都以 --[[ 开始,并以 --]]结束。如下所示:
--[[ my first program in Lua --]]
标识符
Lua 中标识符是识别变量、函数或者其它用户自定义项的名字。标符识总是以字母或者下划线开始,其后可以是零个或多个字母、下划线或数字。
Lua 标识符中不允许出现任何标点符号,比如,@,$ 或者 %。Lua 是大小写敏感的语言,因此 Manpower 和 manpower 是 Lua 中两个不同的标识符。下面所列的是一些合法标识符的例子。
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
```
### 关键字
下面列表中所示的是 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,何处结束,以及另一个元素从何处开始。因此,在下面的语句中:
```lua
local age
在 local 与 age 之间至少有一个空白符(通常是空格),这个空白符使得解释器可以将 local 与 age 区分开。另一方面,在下面的语句中:
fruit = apples + oranges --get the total fruit
fruit 与 = 之间以及 = 与 apples 之间的空白符都是可以没有的。但是为了程序的可读性目的,建议你在它们之间使用空白符。