aul 语法约定和命令行方式

来源:互联网 发布:甘肃 预约挂号软件 编辑:程序博客网 时间:2024/06/05 22:45

原文链接:http://www.douban.com/group/topic/17549829/

话说看文字性的定义和注意事项最无聊了,所以就来大朵大朵的摘抄吧。 
先来热身一下吧! 

进入和退出交互环境 
在命令行中输入 lua 回车就会以交互模式运行 lua,
键入文件结束符可以退出交互模式(Ctrl-D in Unix, Ctrl-Z in DOS/Windows),
或者调用 OS 库的 os.exit() 函数也可以退出。 

来看两个例子 
如大多数语言一样,首先要写的就是著名的 hello, world 
在 lua 环境命令行输入 
print("hello, world") 
很眼熟吧,居然和 Python3.x 语法一样。 
如果是把 print("hello, world") 保存在 lua 文件中,比如说使用 lua filename.lua 

再来看另外一个有点小复杂的例子

例子中首先定义一个是计算阶乘的函数,然后根据用户输入的数字输出结果。
感叹一下,神似 python 那! 
-- defines a factorial function 
function fact (n) 
if n == 0 then 
return 1 
else 
return n * fact(n-1) 
end 
end 
print("enter a number:") 
a = io.read("*number") -- read a number 
print(fact(a) 

Chunk 是什么玩意? 
Chunk 是一系列语句,Lua 执行的每一块语句
(可以是一系列语句的组合,还可以是函数,Chunk 可以很大,在 Lua 中几个 MByte 的 Chunk 是很常见的),
比如一个文件或者交互模式下的每一行都是一个 Chunk。 
在交互模式下,Lua 通常把每一个行当作一个 Chunk,但如果 Lua 一行不是一个完整的 Chunk 时,
他会等待继续输入直到得到一个完整的 Chunk. 在 Lua 等待续行时,显示不同的提示符(一般是 >>)。 
可以通过指定参数让 Lua 执行一系列 Chunk。
例如:假定一个文件 a 内有单个语句 x = 1 另一个文件 b 有语句 print(x) 
lua -la -lb 
命令首先在一个 Chunk 内先运行 a 然后运行 b。 
运行完 Chunk 后进入交互模式则需要加上 -i 选项,如 lua -i -la -lb 
除此之外,还可以使用 dofile 函数,在交互模式下: 
dofile("test.lua") 
然后就可以引用其中的函数等等。 
-i和dofile很方便调试、测试代码。 

语法约定
标示符:字母 (letter) 或者下划线开头的字母、下划线、数字序列.
最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。
Lua 中,letter 的含义是依赖于本地环境的。 
保留字 :以下字符为 Lua 的保留字,不能当作标识符。 
and break do else elseif 
end false for function if 
in local nil not or 
repeat return then true until 
while
注意:Lua 是大小写敏感的. 

注释:单行注释:-- 
-- no action (comment) 
多行注释:--[[ --]] 
--[[ 
print(10) 
--]] 

全局变量 
定义:
全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,
访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil. 
删除全局变量,赋值为nil就可以了,如 m = nil 

命令行方式
lua [options] [script [args]] 
-e:直接将命令传入 Lua 
lua -e "print(math.sin(12))" --> -0.53657291800043 
-l:加载一个文件. 
-i:进入交互模式. 
_PROMPT 内置变量作为交互模式的提示符 
lua -i -e "_PROMPT=' lua> '" 
Lua 的运行过程,在运行参数之前,Lua 会查找环境变量 LUA_INIT 的值,
如果变量存在并且值为 @filename,Lua 将加载指定文件。
如果变量存在但不是以 @ 开头,Lua 假定 filename 为 Lua 代码文件并且运行他。
利用这个特性,我们可以通过配置,灵活的设置交互模式的环境。
可以加载包,修改提示符和路径,定义自己的函数,修改或者重命名函数等。 
全局变量 arg 存放 Lua 的命令行参数。 
lua script a b c 
在运行以前,Lua 使用所有参数构造 arg 表。脚本名索引为 0,脚本的参数从 1 开始增加。脚本前面的参数从 -1 开始减少。 
lua -e "sin=math.sin" script a b 
arg 表如下: 
arg[-3] = "lua" 
arg[-2] = "-e" 
arg[-1] = "sin=math.sin" 
arg[0] = "script" 
arg[1] = "a" 
arg[2] = "b" 

关于分号 
Lua 在每个语句结尾的分号(;)是可选的,同一行中有多个语句的话最好使用分号(;)隔开
(这里说的是最好而不是必须,因为即使没有分号 lua 也会正确执行而不会报错,但是为了更好的阅读建议加上分号)。

0 0