Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。 一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
运行
首先,我们需要知道,Lua是类C的,所以,他是大小写字符敏感的。
下面是Lua的Hello World。注意:Lua脚本的语句的分号是可选的,这个和shell脚本很类似
print("Hello World")
#1 你可以像python一样,在命令行上运行lua命令后进入lua的shell中执行语句。
root@x.x.x.x:/home/jeffzhuang/lua# lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> print("Hello, World")
Hello, World
>
#2 也可以把脚本存成一个文件,用如下命令行来运行。
>lua file.lua
#3 或是像shell一样运行root@x.x.x.x:/home/jeffzhuang/lua# cat hello.lua
#!/usr/bin/lua
print("hello,world")
root@x.x.x.x:/home/jeffzhuang/lua# chmod +x hello.lua
root@x.x.x.x:/home/jeffzhuang/lua# ./hello.lua
hello,world
root@x.x.x.x:/home/jeffzhuang/lua#
语法
注释
-- 两个减号是行注释
--[[ 这是块注释-- ]]
变量
Lua的数字只有double型,64bits,你不必担心Lua处理浮点数会慢(除非大于100,000,000,000,000),或是会有精度问题。你可以以如下的方式表示数字,0x开头的16进制和C是很像的。
<span style="font-family:Microsoft YaHei;">um = 1024 num = 3.0 num = 3.1416 num = 314.16e-2 num = 0.31416E1 num = 0xff num = 0x56</span>
字符串你可以用单引号,也可以用双引号,还支持C类型的转义,比如: ‘\a’ (响铃), ‘\b’ (格), ‘\f’ (表单), ‘\n’ (换行), ‘\r’ (回车), ‘\t’ (横向制表), ‘\v’ (纵向制表), ‘\\’ (反斜杠), ‘\”‘ (双引号), 以及 ‘\” (单引号)下面的四种方式定义了完全相同的字符串(其中的两个中括号可以用于定义有换行的字符串)
变量没有预定义的类型,任何变量都可以包含任何类型的值<span style="font-family:Microsoft YaHei;">a = 'alo\n123"' a = "alo\n123\"" a = '\97lo\10\04923"' a = [[alo 123"]]</span>
lua中的变量如果没有特殊说明,全是全局变量,那怕是语句块或是函数里。变量前加local关键字的是局部变量。<span style="font-family:Microsoft YaHei;">Print(tyoe(a)) -->nill a=10 Print(type(a)) -->number a=”a string” Print((a)) -->string</span>
字符串<span style="font-family:Microsoft YaHei;">theGlobalVar = 50 local theLocalVar = "local variable"</span>
lua的字符串是不可变的值,不能像在c语言中那样直接修改字符串的某个字符,而是根据修改要求来创建一个新的字符串
a=“one string”
b=string.gsub(a,”one”,”another”
字符串可以用一对匹配的单引号或者双引号
另外可一用一对匹配的双方括号来界定一个字母字符串,就像写“块注释”那样。以这种形式书写的字符串可以延伸多 行,lua不会解释其中的转移序列。这种写法对于书写那还总含有程序的字符串尤为有
<span style="font-family:Microsoft YaHei;">page=[[ <html> <head> <title>an html page</title> <body> <a herf="http://www.lua.org">lua</a> </body> </head> </html> ]] print(page)</span></span>
或者[===[中间包含任意个等号作为分割符号
在lua中,”..”是字符连接操作符。当直接在一个数字后面输入他的时候,必须要用一个空格来分割他们。不然,lua会将第一个点理解为一个小数点可以在字符串前面放置操作符“#”来获得该字符串的长度