Lua采用了自动内存管理。所以不用担心新创建的对象需要的内存如何分配出来,也不用考虑对象不再被使用后怎样释放它们所占用的内存。 Lua实现了一个增量标记-扫描收集器。它使用这两个数字来控制垃圾收集循环:垃圾收集器间歇率 和 垃圾收集器步进倍率。 这两个数字都使用百分数为单位(例如:100在内部表示1 ...
分类:
其他好文 时间:
2016-09-19 12:47:37
阅读次数:
161
当一个对象只有一个方法时,可以不用创建接口table,但是要将这个单独的方法作为对象来返回。可以参考迭代器那一节,是如何构造一个迭代器函数,那个函数将状态保存为closure。 一个具有状态的迭代器是一个单一方法对象。 单一方法对象还有一种情况,若这个方法是一个调度(dispatch)方法,它根据某 ...
分类:
其他好文 时间:
2016-09-19 10:13:30
阅读次数:
131
在Lua面向对象编程的基础设计当中,没有提供私密性机制。但是可以用其他方法实现,从而获得对象的访问控制。 这种实现不常用,作为兴趣爱好,只做基本了解。 基本做法是:通过两个table来表示一个对象。一个用来保存状态,一个用于操作(或称为接口)。 为了避免未授权的访问,表示状态的table不保存在其他 ...
分类:
其他好文 时间:
2016-09-18 20:48:56
阅读次数:
132
类也是对象,所有它们也可以从其他类获得方法。这就是“继承”,可以在Lua中表示: 如果想从这个类中派生一个子类,以使客户能够透支。则先需要创建一个空的类,从基类继承所有的操作: SpecialAccount就是一个Account的实例。如下所示: SpecialAccount从Account继承了n ...
分类:
其他好文 时间:
2016-09-18 19:41:00
阅读次数:
112
在Lua中进行面向对象编程时有几种方法,上一小结介绍了一种使用__index元方法的做法。 下面要介绍另一种方法,可以在Lua中实现多继承. 关键一点,在于用函数作为__index元字段。 多重继承意味着一个类可以有多个基类。因此无法使用一个类中的方法来创建子类,而是需要定义一个特殊的函数来创建。 ...
分类:
其他好文 时间:
2016-09-18 19:29:01
阅读次数:
90
Lua中的table就是一种对象。 1、table和对象一样拥有状态 2、和对象一样有一个独立的标识符(a self) 3、和对象一样,具有独立于创建者和创建地的生命周期。 对象有他们自己的操作,table同样也有: 有了上面的定义,可以这样调用: 这种函数就是所谓的“方法(Method)”,不过在 ...
分类:
其他好文 时间:
2016-09-18 15:06:23
阅读次数:
149
1. 反函数 定义1: A function ? is called a one-to-one function if it never takes on the same value twice; that is ?(x1)≠?(x2) whenever x1≠x2. Horizontal Lin ...
分类:
其他好文 时间:
2016-09-14 16:29:12
阅读次数:
115
本文直接从代码调用微信扫码支付讲起。账号配置,参数生成等请参考官方文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1 微信扫码支付。简单来说,就是你把微信支付需要的信息,生成到二维码图片中。通过微信扫一扫,发起支付。我们需 ...
分类:
微信 时间:
2016-09-13 16:19:48
阅读次数:
363
Lua支持具有层级性的模块名,可以用一个点来分隔名称中的层级。 比如,一个mod.sub模块,它就是mod的子模块。一个包(package)就是一个完整的模块树。 当你require "mod.sub"时,require首先会用"mod.sub"作为key,去询问package.loaded 然后找 ...
分类:
其他好文 时间:
2016-09-13 13:31:56
阅读次数:
94
1. 导数与变化率 通常,我们称曲线上某一个点切线的斜率为曲线在该点上的斜率。如果我们对着该点无限将其放大,曲线在有限的视野范围内就会变成了直线。 We sometimes refer to the slope of the tangent line to a curve at a point as ...
分类:
其他好文 时间:
2016-09-12 20:41:27
阅读次数:
176