通过例子学 Lua 正式版
阅读方法和声明
请按 视图-文档结构图,来查看本文档,问文档中所有文章都转自网络,未经作者允许,不得用
于商业用途
前言
Lua 是一种完全免费的脚本语言, 可以和 C/C++语言紧密结合,
它的官方网站在 http://www.lua.org./ 在网站上可以下载到 lua 的源码, 没有可
执行版本, 不过不用担心, 因为 lua 源码可以在任何一种 C/C++的编译器上编译.
如果要学习 Lua, 官方网站上的 Reference 是必备的,上面有每个命令的用法,非常详细。
参考手册 http://www.lua.org/manual/5.0/
作者写的 Programming in Lua http://www.lua.org/pil/
2.编译
如果用的 VC6, 可以下载所需的 project 文件,地址在
http://sourceforge.net/project/showfiles.php?group_id=32250&package_id=115604
VSNET2003 可以下载这个 sln 文件 http://home.comcast.net/~vertigrated/lua/vs7.zip
偶用的是 cygwin 和 linux, 打入以下命令即可,
tar -zxvf lua-5.0.2.tar.gz
cd lua-5.0.2
sh ./configure
make
这样就 OK 了。
为了以后使用方便,最好把 bin 目录加入到 path 里面。
通过例子学习 Lua(1) ---- Hello World
把以下程序打入文件 e01.lua
例 1:e01.lua
-- Hello World in Lua
print("Hello World.")
Lua 有两种执行方式,一种是嵌入到 C 程序中执行,还有一种是直接从命令行方式下执行。
这里为了调试方便,采用第二种方式,执行命令 lua e01.lua
输出结果应该是:
Hello World.
4.程序说明
第一行 -- Hello World in Lua
这句是注释,其中--和 C++中的//意思是一样的
第二行 print("Hello World.")
调用 lua 内部命令 print,输出"Hello World."字符串到屏幕,Lua 中的字符串全部是由"括
起来的。
这个命令是一个函数的调用,print 是 lua 的一个函数,而"Hello World."是 print 的参数。
5.试试看
在 Lua 中有不少字符串的处理操作,本次的课后试试看的内容就是,找出连接两个字符串
的操作,
并且 print 出来。
通过例子学习 Lua(2) --- Lua 流程控制 (转)
1. 函数的使用
以下程序演示了如何在 Lua 中使用函数, 及局部变量
例 e02.lua
-- functions
function pythagorean(a, b)
local c2 = a^2 + b^2
return sqrt(c2)
end
print(pythagorean(3,4))
运行结果
5
程序说明
在 Lua 中函数的定义格式为:
function 函数名(参数)
...
end
与 Pascal 语言不同, end 不需要与 begin 配对, 只需要在函数结束后打个 end 就可以了.
本例函数的作用是已知直角三角形直角边, 求斜边长度. 参数 a,b 分别表示直角边长,
在函数内定义了 local 形变量用于存储斜边的平方. 与 C 语言相同, 定义在函数内的代
码不会被直接执行, 只有主程序调用时才会被执行.
local 表示定义一个局部变量, 如果不加 local 刚表示 c2 为一个全局变量, local 的作用域
是在最里层的 end 和其配对的关键字之间, 如 if ... end, while ... end 等。全局变量的
作用域是整个程序。
2. 循环语句
例 e03.lua
-- Loops
for i=1,5 do
print("i is now " .. i)
end
运行结果
i is now 1
i is now 2
i is now 3
i is now 4
i is now 5
程序说明
这里偶们用到了 for 语句
for 变量 = 参数 1, 参数 2, 参数 3 do
循环体
end
变量将以参数 3 为步长, 由参数 1 变化到参数 2
例如:
for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end
这里 print("i is now " .. i)中,偶们用到了..,这是用来连接两个字符串的,
偶在(1)的试试看中提到的,不知道你们答对了没有。
虽然这里 i 是一个整型量,Lua 在处理的时候会自动转成字符串型,不需偶们费心。
3. 条件分支语句
例 e04.lua
-- Loops and conditionals
for i=1,5 do
print(“i is now “ .. i)
if i < 2 then
print(“small”)
elseif i < 4 then
print(“medium”)
else
print(“big”)
end
end
运行结果
i is now 1
small
i is now 2
medium
i is now 3
medium
i is now 4
big
i is now 5
big
程序说明
if else 用法比较简单, 类似于 C 语言, 不过此处需要注意的是整个 if 只需要一个 end,
哪怕用了多个 elseif, 也是一个 end.
例如
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a*b
elseif op == "/" then
r = a/b
else
error("invalid operation")
end
4.试试看
Lua 中除了 for 循环以外, 还支持多种循环, 请用 while...do 和 repeat...until 改写本文中的 for
程序
通过例子学习 Lua(3) ---- Lua 数据结构 (转)
1.简介
Lua 语言只有一种基本数据结构, 那就是 table, 所有其他数据结构如数组啦,
类啦, 都可以由 table 实现.