使用 Lua 编写可嵌入式脚本

本文介绍了Lua脚本语言的基本概念和使用方法,展示了如何创建和执行Lua脚本,详细解释了Lua中的数据结构——表的功能和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.hackhome.com/InfoView/Article_80376_7.html

使用 Lua 编写可嵌入式脚本

日期:2007年6月2日 作者: 查看:[ 大字体 中字体 小字体]

  • 添加到QQ书签收藏 添加到雅虎收藏 添加到百度收藏 添加到Google书签 添加到Yahoo书签 添加到新浪ViVi 添加到搜狐网摘 添加到365Key网摘 添加到天极网摘 添加到diglog 添加到和讯网摘 添加到POCO网摘 添加到YouNote网摘 添加到博拉网 添加到天下图摘 Del.icio.us digg reddit spurl BlinkList blogmarks
  • <script style="display: none;" type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>     或者像在其他解释性语言中一样,我们可以在代码顶部添加一行 “标识符”(#!),使这个脚本变成可执行的,然后像单独命令一样来运行这个文件:
    $ (echo '#! /usr/bin/lua'; cat factorial.lua) > factorial 
    $ chmod u+x factorial
    $ ./factorial
    enter a number:
    4
    24
                      

     

    Lua 语言

        Lua 具有现代脚本语言中的很多便利:作用域,控制结构,迭代器,以及一组用来处理字符串、产生及收集数据和执行数学计算操作的标准库。在 Lua 5.0 Reference Manual 中有对 Lua 语言的完整介绍(请参见 参考资料)。

        在 Lua 中,只有值 具有类型,而变量的类型是动态决定的。Lua 中的基本类型(值)有 8 种: nil,布尔型,数字,字符串,函数,线程,表 以及 用户数据。前 6 种类型基本上是自描述的(例外情况请参见上面的 Lua 特性 一节);最后两个需要一点解释。

    Lua 表

        在 Lua 中,表是用来保存所有数据的结构。实际上,表是 Lua 中惟一的 数据结构。我们可以将表作为数组、字典(也称为散列 或联合数组)、树、记录,等等。

        与其他编程语言不同,Lua 表的概念不需要是异构的:表可以包含任何类型的组合,也可以包含类数组元素和类字典元素的混合体。另外,任何 Lua 值 —— 包括函数或其他表 —— 都可以用作字典元素的键值。

    要对表进行浏览,请启动 Lua 解释器,并输入清单 1 中的黑体显示的代码。


    清单 1. 体验 Lua 表
    $ lua
    > -- create an empty table and add some elements
    > t1 = {}
    > t1[1] = "moustache"
    > t1[2] = 3
    > t1["brothers"] = true
    > -- more commonly, create the table and define elements
    > all at once
    > t2 = {[1] = "groucho", [3] = "chico", [5] = "harpo"}
    > t3 = {[t1[1]] = t2[1], accent = t2[3], horn = t2[5]}
    > t4 = {}
    > t4[t3] = "the marx brothers"
    > t5 = {characters = t2, marks = t3}
    > t6 = {["a night at the opera"] = "classic"}
    > -- make a reference and a string
    > i = t3
    > s = "a night at the opera"
    > -- indices can be any Lua value
    > print(t1[1], t4[t3], t6[s])
    moustache   the marx brothers classic
    > -- the phrase table.string is the same as table["string"]
    > print(t3.horn, t3["horn"])
    harpo   harpo
    > -- indices can also be "multi-dimensional"
    > print (t5["marks"]["horn"], t5.marks.horn)
    harpo   harpo
    > -- i points to the same table as t3
    > = t4[i]
    the marx brothers
    > -- non-existent indices return nil values
    > print(t1[2], t2[2], t5.films)
    nil     nil     nil
    >  -- even a function can be a key 
    > t = {}
    > function t.add(i,j)
    >> return(i+j)
    >> end
    > print(t.add(1,2))
    3
    > print(t['add'](1,2))
    3
    >  -- and another variation of a function as a key 
    > t = {}
    > function v(x)
    >> print(x)
    >> end
    > t[v] = "The Big Store"
    > for key,value in t do key(value) end
    The Big Store
                      

  • 上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 
============================================
  值得关注的Lua语言 收藏

新一篇: C-Runtime library的string trim函数(学无止境:C函数参考手册需要补课,汗!) | 旧一篇: 线程并发,用标志位同步时要小心

值得关注的Lua语言

札记:
1.Lua流行的速度很快,缘于WOW的缘故吧。
2.参考了一下WOW的脚本,感觉多语言、pet动作的定义可以由lua来完成,这可能是一个好的idea,先看看是否能够通过移植这一关吧
3.这个学习lua的系列不错,写得比较深入,如果有心人看到的话,推荐一下: http://blog.youkuaiyun.com/kun1234567/
4.从 http://www.WOWF1.com (大脚, Big foot)这个网址,可以下载WOW的插件,解压后,其中有一些.lua文件,这是最好的lua的例子

注:
前面随便贴了篇DW上的文章留意要关注的东东,被网友看到,以致被误会忽悠,甚歉!(俺可不是本山 :-))

发表于 @ 2007年11月01日 18:48:00|评论(2)|编辑

新一篇: C-Runtime library的string trim函数(学无止境:C函数参考手册需要补课,汗!) | 旧一篇: 线程并发,用标志位同步时要小心


http://blog.youkuaiyun.com/hylaking/archive/2007/11/01/1861745.aspx



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值