本文转自: http://coolshell.cn/articles/10739.html
运行
首先,我们需要知道,Lua是类C的,所以,他是大小写字符敏感的。
下面是Lua的Hello World。注意:Lua脚本的语句的分号是可选的,这个和GO语言很类似。
1
|
print(
"Hello World"
)
|
你可以像python一样,在命令行上运行lua命令后进入lua的shell中执行语句。
1
2
3
4
5
|
chenhao-air:lua chenhao$ lua
Lua 5.2.2 copyright (C) 1994-2013 Lua.org,PUC-Rio
> print(
"Hello,World"
)
Hello,World
>
|
1
|
>lua
file
.lua
|
或是像shell一样运行:
1
2
3
4
5
6
|
chenhao-air:lua chenhao$
cat
hello.lua
#!/usr/local/bin/lua
print(
"Hello,World"
)
chenhao-air:lua chenhao$
chmod
+x hello.lua
chenhao-air:
test
chenhao$ .
/hello
.lua
Hello,World
|
语法
注释
1
|
-- 两个减号是行注释
|
1
2
3
4
|
--[[
这是块注释
这是块注释
--]]
|
变量
Lua的数字只有double型,64bits,你不必担心Lua处理浮点数会慢(除非大于100,000,000),或是会有精度问题。
你可以以如下的方式表示数字,0x开头的16进制和C是很像的。
1
2
3
4
5
6
7
|
num = 1024
num = 3.0
num = 3.1416
num = 314.16e-2
num = 0.31416E1
num = 0xff
num = 0x56
|
字符串你可以用单引号,也可以用双引号,还支持C类型的转义,比如: ‘\a’ (响铃), ‘\b’ (退格), ‘\f’ (表单), ‘\n’ (换行), ‘\r’ (回车), ‘\t’ (横向制表), ‘\v’ (纵向制表), ‘\\’ (反斜杠), ‘\”‘ (双引号), 以及 ‘\” (单引号)
下面的四种方式定义了完全相同的字符串(其中的两个中括号可以用于定义有换行的字符串)
1
2
3
4
5
|
a =
'alo\n123"'
a =
"alo\n123\""
a =
'\97lo\10\04923"'
a = [[alo
123"]]
|
C语言中的NULL在Lua中是nil,比如你访问一个没有声明过的变量,就是nil,比如下面的v的值就是nil
1
|
v = UndefinedVariable
|
布尔类型只有nil和false是 false,数字0啊,‘’空字符串(’\0′)都是true!
另外,需要注意的是:lua中的变量如果没有特殊说明,全是全局变量,那怕是语句块或是函数里。变量前加local关键字的是局部变量。
1
2
|
theGlobalVar = 50
local theLocalVar =
"local variable"
|
控制语句
不多说了,直接看代码吧(注意:Lua没有++或是+=这样的操作)
while循环
1
2
3
4
5
6
7
|
sum = 0
num = 1
while
num <= 100
do
sum = sum + num
num = num + 1
end
print(
"sum ="
,sum)
|
if-else分支
1
2
3
4
5
6
7
8
9
10
|
if
age == 40 and sex ==
"Male"
then
print(
"男人四十一枝花"
)
elseif age > 60 and sex ~=
"Female"
then
print(
"old man without country!"
)
elseif age < 20 then
io.write(
"too young,too naive!\n"
)
else
local age = io.read()
print(
"Your age is "
..age)
end
|
上面的语句不但展示了if-else语句,也展示了
1)“~=”是不等于,而不是!=
2)io库的分别从stdin和stdout读写的read和write函数
3)字符串的拼接操作符“..”
另外,条件表达式中的与或非为分是:and,or,not关键字。
for 循环
1
2
3
4
|
sum = 0
for
i = 1,100
do
sum = sum + i
end
|
1
2
3
4
|
sum = 0
for
i = 1,100,2
do
sum = sum + i
end
|
1
2
3
4
|
sum = 0
for
i = 100,1,-2
do
sum = sum + i
end
|