在Lua中的每个值都有一套预定义的操作集合。例如可以将数字相加,可以连接字符串,还可以在table中插入一对key-value等。但是我们无法将两个table相加,无法对函数作比较,也无法调用一个字符串。 但是,Lua提供了元表与元方法来修改一个值的行为,使其在面对一个非预定义的操作时执行一个...
分类:
其他好文 时间:
2015-03-31 23:53:20
阅读次数:
174
概述
一个类就是像是一个创建对象的模具,对于Lua这种没有类的概念的语言,为了模拟类,方法是为要创建的对象制定一个原型(prototype)。这个原型相当于其他语言中的类。但是原型同时也是一种常规的对象,当其他的对象(看成是原型的实例)遇到一个未知的操作时,就会去原型中查找。因此,在Lua这种没有类的语言中,为了表示一个类,只需创建一个专用作其他对象的原型。类和原型都是一种组织对象间共...
分类:
其他好文 时间:
2015-03-28 21:53:43
阅读次数:
174
题意:你有X元钱,进行M轮赌博游戏。每一轮可以将所持的任意一部分钱作为赌注(赌注为0元表示这一轮不押),赌注可以是小数的,不是一定要整数。每一轮 赢的概率为P,赢了赌注翻倍,输了赌注就没了。如果你最后持有至少1000000元钱的话,就可以把钱全部带走。要求计算在采取最优策略时,获得至少 100000...
分类:
其他好文 时间:
2015-03-28 12:45:08
阅读次数:
225
类的包含(称为has A)是程序设计中一种软件重用技术。即定义一个新的类时,通过编译器把另一个类 “抄”进来。当一个类中含有已经定义的类类型成员,带参数的构造函数对数据成员初始化,须使用初始化语法形式。构造函数 ( 变元表 ) : 对象成员1( 变元表 ) , … , 对象成员n ( 变元表 ) ;...
分类:
编程语言 时间:
2015-03-08 06:43:09
阅读次数:
168
在网上看了一篇介绍Lua面向对象的文件,觉得十分重要,于是把重点摘录下来。原文在http://blog.csdn.net/guang11cheng/article/details/7547253元表概念Lua中,面向对向是用元表这种机制来实现的。元表是个很“道家”的机制,很深遂,很强大,里面有一些基...
分类:
其他好文 时间:
2015-02-26 16:25:03
阅读次数:
148
前言元表对应的英文是metatable,元方法是metamethod。我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算。在Lua中也有这个道理,两个table类型的变量,你是无法直接进行“+”操作的,如果你定义了一个指定的函数,就可以进行了。那这篇...
分类:
其他好文 时间:
2015-02-11 01:46:51
阅读次数:
232
一 table本质
Lua中table本质实际上是个类似HashMap东西。
其元素是很多的Key-Value对,类似iOS中的字典NSDictionary。
如果尝试访问了一个表中并不存在的元素时,就会触发Lua的一套查找机制。
lua“面向对象”就是凭借这个机制实现的。
示例:
local tab = {}
print(tab.key)
输出:nil
...
分类:
其他好文 时间:
2015-02-07 20:23:58
阅读次数:
170
数值表达式1.奇偶判断2.小数精确计算3.int整数相乘溢出4.负的十六进制与八进制字面常量5.窄数字类型提升至宽类型时使用符号位扩展还是零扩展6.((byte)0x90 == 0x90)?7.三元表达式(?:)8.+=复合赋值问题9.i =++i;与i=i++;的区别10.Integer.MAX_...
分类:
编程语言 时间:
2015-01-29 09:20:02
阅读次数:
297
数值表达式... 2 1. 奇偶判断... 2 2. 小数精确计算... 2 3. int整数相乘溢出... 3 4. 负的十六进制与八进制字面常量... 3 5. 窄数字类型提升至宽类型时使用符号位扩展还是零扩展... 4 6. ((byte)0x90 == 0x90)?. 5 7. 三元表达式(...
分类:
编程语言 时间:
2015-01-29 01:16:42
阅读次数:
298
lua面向对象实现:一个类就像是一个创建对象的模具。有些面向对象语言提供了类的概念,在这些语言中每个对象都是某个特定类的实例。lua则没有类的概念,每个对象只能自定义行为和形态。不过,要在lua中模拟类也并不困难。lua中,面向对象是用元表这个机制来实现。首先,一般来说一个表和它的元表是不同的个体(...
分类:
其他好文 时间:
2015-01-07 14:45:11
阅读次数:
128