Lua脚本入门

来源: LUPA开源社区
发布时间: 2007-07-02 14:40 版权申明

字体:


文章来源于http://www.lupaworld.com

使用流程
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程序 <script type=text/javascript> bbscode('postcontent1');

数组的使用

1.简介
Lua语言只有一种基本数据结构, 那就是table, 所有其他数据结构如数组啦,
类啦, 都可以由table实现.

2.table的下标
例e05.lua
-- Arrays
myData = {}
myData[0] = “foo”
myData[1] = 42

-- Hash tables
myData[“bar”] = “baz”

-- Iterate through the
-- structure
for key, value in myData do   
print(key .. “=“ .. value)
end

输出结果
0=foo
1=42
bar=baz

程序说明
首先定义了一个table myData={}, 然后用数字作为下标赋了两个值给它. 这种
定义方法类似于C中的数组, 但与数组不同的是, 每个数组元素不需要为相同类型,
就像本例中一个为整型, 一个为字符串.

程序第二部分, 以字符串做为下标, 又向table内增加了一个元素. 这种table非常
像STL里面的map. table下标可以为Lua所支持的任意基本类型, 除了nil值以外.

Lua对Table占用内存的处理是自动的, 如下面这段代码
    a = {}
    a["x"] = 10
    b = a       -- `b' refers to the same table as `a'
    print(b["x"]) --> 10
    b["x"] = 20
    print(a["x"]) --> 20
    a = nil     -- now only `b' still refers to the table
    b = nil     -- now there are no references left to the table
b和a都指向相同的table, 只占用一块内存, 当执行到a = nil时, b仍然指向table,
而当执行到b=nil时, 因为没有指向table的变量了, 所以Lua会自动释放table所占内存

3.Table的嵌套
Table的使用还可以嵌套,如下例
例e06.lua
-- Table ‘constructor’
myPolygon = {   
color=“blue”,   
thickness=2,   
npoints=4;   
{x=0,     y=0},   
{x=-10, y=0},   
{x=-5, y=4},   
{x=0,     y=4}
}

-- Print the color
print(myPolygon[“color”])

-- Print it again using dot
-- notation
print(myPolygon.color)

-- The points are accessible
-- in myPolygon[1] to myPolygon[4]

-- Print the second point’s x
-- coordinate
print(myPolygon[2].x)

程序说明
首先建立一个table, 与上一例不同的是,在table的constructor里面有{x=0,y=0},
这是什么意思呢? 这其实就是一个小table, 定义在了大table之内, 小table的
table名省略了.
最后一行myPolygon[2].x,就是大table里面小table的访问方式. <script type=text/javascript> bbscode('postcontent2');

文章来源于http://www.lupaworld.com

声明:LUPA开源社区刊登此文只为传递信息,并不表示赞同或者反对。

查看全部评论(4) 最新评论

  • 删除 Guest (, 评 0 分) 支持 反对

    [url=http://www.jyssp.cn]金源盛[/url]
    [url=http://www.szlywood.cn]深圳绿意地板[/url]
    [url=http://www.szkingtools.com]木工刀具[/url]
    [url=http://www.szkingtools.com]切铝机[/url]
    [url=http://www.szkingtools.com]铝型材切割机[/url]
    [url=http://www.szkingtools.com]合金锯片[/url]
    [url=http://www.bo-sea.com]木工刀具[/url]
    [url=http://www.bo-sea.com]切铝机[/url]
    [url=http://www.bo-sea.com]铝型材切割机[/url]
    [url=http://www.bo-sea.com]合金锯片[/url]
    [url=http://www.hogwei.com]高周波[/url]
    [url=http://www.chuanbeng.com]冷水机[/url]
    [url=http://www.chuanbeng.com]模温机[/url]
    [url=http://www.chuanbeng.com]工业冷水机[/url]
    [url=http://www.chuanbeng.com]水冷式冷水机[/url]
    [url=http://www.chuanbeng.com]风冷式冷水机[/url]
    [url=http://www.chuanbeng.com]模具控温机[/url]
    [url=http://www.chuanbeng.com]模具恒温机[/url]
    [url=http://www.chuanbeng.com]高温模温机[/url]
    [url=http://www.chuanbeng.com]塑料破碎机[/url]
    [url=http://www.chuanbeng.com]混料机[/url]
    [url=http://www.xinbaosz.com]烤漆[/url]
    [url=http://www.xinbaosz.com]五金烤漆[/url]
    [url=http://www.xinbaosz.com]粉体烤漆[/url]
    [url=http://www.chuanbeng.com]料斗干燥机[/url]
    [url=http://www.szjucai.net]聚才空压机[/url]
    [url=http://www.szzhilong.cn]电镀挂具胶[/url]
    [url=http://www.fifiri.com]成人休闲女装[/url]
    [url=http://www.szdf888.com]广告扑克牌[/url]
    [url=http://www.szlanguang.com]水下灯[/url]
    [url=http://www.sz-guanjie.com.cn]喷涂设备[/url]
    [url=http://www.sztyt.com]转移膜[/url]
    [url=http://www.sztyt.com]镭射膜[/url]
    [url=http://www.szssfbj.com]深圳搬家[/url]
    [url=http://www.hlx-led.com]发光二极管[/url]
    [url=http://www.qy91.com]深圳网站推广[/url]
    [url=http://www.szweifeng.cn]专业制笔[/url]
    [url=http://www.szbhl.cn]百合隆[/url]
    [url=http://www.szxinchang.net]求购五金电动工具[/url]
    [url=http://www.panxinbo.com]挂带[/url]
    [url=http://www.hhy-cn.com]中港快件[/url]
    [url=http://www.qiaobo.com]超声波清洗机[/url]
    [url=http://www.guofucn.com]手机充电器[/url]
    [url=http://www.szhyl.net.cn]铝材专业五金拉手五金电镀[/ur]

  • 删除 Guest (, 评 0 分) 支持 反对

    http://www.jhlsmc.cn  京豪铝塑门窗\阳光房\塑钢门窗
    http://www.jhlsmc.cn/sgmc.htm  塑钢门窗
    http://www.jhlsmc.cn/sgmcsd.htm  实德塑钢门窗
    http://www.jhlsmc.cn/sgmchl.htm  海螺塑钢门窗
    http://www.jhlsmc.cn/sgmclg.htm  LG好佳喜塑钢门窗
    http://www.jhlsmc.cn/dql.htm  断桥铝合金门窗
    http://www.jhlsmc.cn/dql.htm  断桥铝
    http://www.jhlsmc.cn/dql.htm  断桥铝合金
    http://www.jhlsmc.cn/dqlbx.htm  北新断桥铝合金门窗
    http://www.jhlsmc.cn/dqlfl.htm  凤铝断桥铝合金门窗
    http://www.jhlsmc.cn/dqlzw.htm  忠旺断桥铝合金门窗  
    http://www.jhlsmc.cn/dqlhpl.htm  和平断桥铝合金门窗
    http://www.jhlsmc.cn/ygf.htm  北京阳光房
    http://www.jhlsmc.cn/ygf1.htm  阳光房设计
    http://www.jhlsmc.cn/ygf2.htm  阳光房图片
    http://www.jhlsmc.cn/ygf3.htm  京豪阳光房
    http://www.jhlsmc.cn/ygf4.htm  阳光房
    http://www.jhlsmc.cn/ygf5.htm  阳光房
    http://www.jhlsmc.cn/ygf6.htm  阳光房

    http://www.jhlsmc.com/cpjs4.html  阳光房设计
    http://www.jhlsmc.com/cpjs4.html  北京京豪阳光房
    http://www.jhlsmc.com/cpjs4.html  阳光房[  
    http://www.jhlsmc.com/cpjs4-1.html  彩钢阳光房
    http://www.jhlsmc.com/cpjs4-1.html  钢化玻璃阳光房
    http://www.jhlsmc.com/cpjs4-4.html  中空钢化玻璃盖顶--阳光房
    http://www.jhlsmc.com/cpjs4-5.html  翡翠楼---地中海式(阳光房)
    http://www.jhlsmc.com/cpjs4-6.html  水晶阁阳光房
    http://www.jhlsmc.com/cpjs4-7.html  宝石l阳光房
    http://www.jhlsmc.com/cpjs2.html  北京京豪塑钢门窗  
    http://www.jhlsmc.com/cpjs2.html  塑钢
    http://www.jhlsmc.com/cpjs2.html  塑钢门窗
    http://www.jhlsmc.com/cpjs2-1.html  海螺塑钢门窗
    http://www.jhlsmc.com/cpjs2-2.html  实德塑钢门窗
    http://www.jhlsmc.com/cpjs2-3.html  LG好佳喜塑钢门窗
    http://www.jhlsmc.com/cpjs1-1.html  北京断桥铝
    http://www.jhlsmc.com/cpjs1-1.html  断桥铝合金
    http://www.jhlsmc.com/cpjs1-1.html  京豪断桥铝合金门窗
    http://www.jhlsmc.com/cpjs1-1.html  断桥铝合金门窗
    http://www.jhlsmc.com/cpjs1-4.html  北新断桥铝合金门窗
    http://www.jhlsmc.com/cpjs1-3.html  凤铝断桥铝合金门窗
    http://www.jhlsmc.com/cpjs1-1.html  忠旺断桥铝合金门窗
    [URL=http://www.jhlsmc.com/cpjs1-2.html  和平断桥铝合金门窗

  • 删除 Guest (, 评 0 分) 支持 反对

    http://www.fldygf.com  福来多阳光房|塑钢门窗|断桥铝门窗
    http://www.fldygf.com/pic1.html  断桥铝
    http://www.fldygf.com/pic1.html  断桥铝合金
    http://www.fldygf.com/pic1.html 断桥铝合金门窗
    http://www.fldygf.com/pic1-3.html 北新断桥铝合金门窗
    http://www.fldygf.com/pic1-2.html 凤铝断桥铝合金门窗
    http://www.fldygf.com/pic1.html 忠旺断桥铝
    http://www.fldygf.com/pic1-1.html 和平断桥铝
    http://www.fldygf.com/pic2.html 塑钢
    http://www.fldygf.com/pic2.html 门窗
    http://www.fldygf.com/pic2.html 塑钢门窗
    http://www.fldygf.com/pic2-1.html 海螺塑钢门窗
    http://www.fldygf.com/pic2-2.html 实德塑钢门窗
    http://www.fldygf.com/pic2-3.htmlLG 好佳喜塑钢门窗
    http://www.fldygf.com/pic3-1.html 彩钢阳光房
    http://www.fldygf.com/pic3-3.html 钢化玻璃阳光房
    http://www.fldygf.com/pic3-4.html 中空钢璃阳光房
    http://www.fldygf.com/pic3-7.html 宝石屋l阳光房
    http://www.fldygf.com/pic3-6.html 水晶阁阳光房
    http://www.fldygf.com/pic3-8.html 钻石楼阳光房
    http://www.fldygf.com/pic3.html 阳光房设计
    http://www.fldygf.com/pic3.html 北京阳光房

  • 删除 Guest (, 评 0 分) 支持 反对

    http://www.fldygf.cn/sgmc.htm  塑钢门窗
    http://www.fldygf.cn/sgmcsd.htm  实德塑钢门窗
    http://www.fldygf.cn/sgmchl.htm  海螺塑钢门窗
    http://www.fldygf.cn/sgmclg.htm  LG好佳喜塑钢门窗
    http://www.fldygf.cn/dql.htm  断桥铝合金门窗
    http://www.fldygf.cn/dql.htm  断桥铝合金
    http://www.fldygf.cn/dql.htm  断桥铝
    http://www.fldygf.cn/dqlbx.htm  北新断桥铝合金门窗
    http://www.fldygf.cn/dqlfl.htm  凤铝断桥铝合金门窗  
    http://www.fldygf.cn/dqlzw.htm  忠旺断桥铝合金门窗
    http://www.fldygf.cn/dqlhpl.htm  和平断桥铝合金门窗
    http://www.fldygf.cn/ygf.htm  北京阳光房
    http://www.fldygf.cn/ygf1.htm  阳光房
    http://www.fldygf.cn/ygf2.htm  阳光房
    http://www.fldygf.cn/ygf3.htm  阳光房
    http://www.fldygf.cn/ygf4.htm  阳光房
    http://www.fldygf.cn/ygf5.htm  阳光房
    http://www.fldygf.cn/ygf6.htm  阳光房
    http://www.fldygf.cn/ygf7.htm  阳光房
    http://www.fldygf.cn/ygf8.htm  阳光房
    http://www.fldygf.cn  福来多阳光房门窗

查看全部评论(4)我来说两句 直接向LUPA提出您的宝贵建议

-5 -3 -1 - +1 +3 +5