上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页
摘要: Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加。假设a和b都是table,通过元表可以定义如何计算表达式a+b。当Lua试图将两个table相加时,它会先检查两者之一是否有元表,然后检查该元表中是否存在__add字段,如果有,就调用该字段对应的值。这个值就是所谓的“元方法”,这个函数用于计算table的和。 Lua中每个值都有一个元表。table和userdata可以有各自独立的元表,而其它数据类型的值则共享其类型所属的单一元表。缺省情况下,table在创建时没有元表,如: t = {} print(getmetatable(t)) --输. 阅读全文
posted @ 2012-06-29 07:10 OrangeAdmin 阅读(8123) 评论(1) 推荐(3) 编辑
摘要: 1. 数据文件: 我们可以利用Lua中table的构造式来定义一种文件格式,即文件中的数据是table构造并初始化的代码,这种方式对于Lua程序而言是非常方便和清晰的,如: Entry { "Stephen Liu", "Male", "Programmer", "BS" } Entry { "Jerry Tian", "Male", "Programmer", "BS" } 需要注意的是,Entry{<code>}等价于E 阅读全文
posted @ 2012-06-27 08:09 OrangeAdmin 阅读(7333) 评论(6) 推荐(3) 编辑
摘要: Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础。如数组、记录、线性表、队列和集合等,在Lua中都可以通过table来表示。 1. 数组: 使用整数来索引table即可在Lua中实现数组。因此,Lua中的数组没有固定的大小,如:1 a = {}2 for i = 1, 1000 do3 a[i] = 04 end5 print("The length of array 'a' is " .. #a)6 --The length of array 'a' is 1000 在Lua中,可以让任何数作为数组的起始索引,但通常 阅读全文
posted @ 2012-06-25 10:28 OrangeAdmin 阅读(11784) 评论(3) 推荐(3) 编辑
摘要: 1. 编译: Lua中提供了dofile函数,它是一种内置的操作,用于运行Lua代码块。但实际上dofile只是一个辅助函数,loadfile才是真正的核心函数。相比于dofile,loadfile只是从指定的文件中加载Lua代码块,然后编译这段代码块,如果有编译错误,就返回nil,同时给出错误信息,但是在编译成功后并不真正的执行这段代码块。因此,我们可以将dofile实现为:1 function dofile(filename)2 local f = assert(loadfile(filename))3 return f()4 end 这里如果loadfile执行失败,a... 阅读全文
posted @ 2012-06-22 08:08 OrangeAdmin 阅读(9631) 评论(0) 推荐(3) 编辑
摘要: 1. 迭代器与Closure: 在Lua中,迭代器通常为函数,每调用一次函数,即返回集合中的“下一个”元素。每个迭代器都需要在每次成功调用之间保持一些状态,这样才能知道它所在的位置和下一次遍历时的位置。从这一点看,Lua中closure机制为此问题提供了语言上的保障,见如下示例: 1 function values(t) 2 local i = 0 3 return function() 4 i = i + 1 5 return t[i] 6 end 7 end 8 t = {10, 20, 30} 9 it = values(t)10... 阅读全文
posted @ 2012-06-20 09:11 OrangeAdmin 阅读(13994) 评论(11) 推荐(4) 编辑
摘要: 一、函数: 在Lua中函数的调用方式和C语言基本相同,如:print("Hello World")和a = add(x, y)。唯一的差别是,如果函数只有一个参数,并且该参数的类型为字符串常量或table的构造器,那么圆括号可以省略,如print "Hello World"和f {x = 20, y = 20}。 Lua为面对对象式的调用也提供了一种特殊的语法--冒号操作符。表达式o.foo(o,x)的另一种写法是o:foo(x)。冒号操作符使调用o.foo时将o隐含的作为函数的第一个参数。 Lua中函数的声明方式如下: function add(a) 阅读全文
posted @ 2012-06-18 10:05 OrangeAdmin 阅读(15803) 评论(6) 推荐(6) 编辑
摘要: 一、表达式: 1. 算术操作符: Lua支持常规算术操作符有:二元的“+”、“-”、“*”、“/”、“^”(指数)、“%”(取模),一元的“-”(负号)。所有这些操作符都可用于实数。然而需要特别说明的是取模操作符(%),Lua中对该操作符的定义为: a % b == a - floor(a / b) * b 由此可以推演出x % 1的结果为x的小数部分,而x - x % 1的结果则为x的整数部分。类似的,x - x % 0.01则是x精确到小数点后两位的结果。 2. 关系操作符: Lua支持的关系操作符有:>、<、>=、<=、==、~=,所有这些操作符的结果均为true 阅读全文
posted @ 2012-06-15 09:50 OrangeAdmin 阅读(12343) 评论(4) 推荐(6) 编辑
摘要: 一、基础知识: 1. 第一个程序和函数: 在目前这个学习阶段,运行Lua程序最好的方式就是通过Lua自带的解释器程序,如: /> lua > print("Hello World") Hello World 这样我们就可以以交互性的方式输入lua代码,并立即得到执行结果了。对于代码块较少的测试程序来说,这种方式确实是非常方便的,然而对于相对复杂的程序而言,这种方式就不是很合适了。如果是这样,我们可以将Lua代码保存到一个独立的Lua程序文件中,之后再通过Lua解释器程序以命令行参数的形式执行文件中的Lua代码。如我们将下面的Lua代码保存到test.lua的文件 阅读全文
posted @ 2012-06-13 09:06 OrangeAdmin 阅读(16536) 评论(13) 推荐(8) 编辑
摘要: 一、简介: Lua作为目前最为流行的、免费轻量级嵌入式脚本语言,在很多工业级的应用程序中被广泛应用,如Adobe's Photoshop,甚至是在一些著名的游戏程序中也被大量使用,如星际。不仅如此,由于Lua具备很多特殊的优点,如语法简单(基于过程)、高效稳定(基于字节码)、可以处理复杂的数据结构、动态类型、以及自动内存管理(基于垃圾收集)等,因此在很多嵌入式设备和智能移动设备中,为了提高程序的灵活性、扩展性和高可配置性,一般都会选择Lua作为它们的脚本引擎,以应对各种因设备不同而带来的差异。二、主要优势: 1. 高效性: 作为一种脚本语言,Lua的高效是众所周知的,因此在实际应用中, 阅读全文
posted @ 2012-06-11 09:24 OrangeAdmin 阅读(13551) 评论(8) 推荐(7) 编辑
摘要: 事实上之前有很长一段时间都在纠结是否有必要好好学习它,但是始终都没有一个很好的理由说服自己。甚至是直到这个项目最终决定选用PostgreSQL时,我都没有真正意识到学习它的价值,当时只是想反正和其它数据库差不多,能用就行了。然而有一天晚上,自己也不知道为什么,躺在床上开始回想整个项目的实施过程,想着想着就想到了数据库选型这一问题上了。事情是这样的,最初客户将他们的产品目标定位为主打中型规模,同时也要在一定程度上支持小型规模。鉴于此,我们为他们提供的方案是中型规模的数据库选用Oracle,小型规模的选定MySQL,在经过多轮商谈之后这个方案通过了。然而随着项目的深入,客户突然有一天提出,由于成. 阅读全文
posted @ 2012-06-08 09:21 OrangeAdmin 阅读(55842) 评论(21) 推荐(40) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页