Lua面向对象程序设计 · 花生肉泥

lua不存在类的概念,每个对象定义他自己的行为并拥有自己的形状(shape)。然而,依据基于原型的语言,在lua中仿效类的概念并不难。

在lua中,使用继承的思想,很容易实现prototype(原型),如果我们有两个对象a和b,我们想让b作为a的原型,只需要

1  
setmetatable(a,{__index = b})  

—|—

这样,对象a调用任何不存在的成员函数都会到对象b中去找,术语上,可以将b看做类,a看做对象。

例:为了使得新创建的对象拥有和Account相似的行为。我们使用__index metamethod,使新的对象继承Account,注意一个小小的优化,我们不需要创建一个额外的表作为account对象的metatable,我们可以用Account表本身作为metatable

1  
2  
3  
4  
5  
6  
function  (o)  
     o = o or {}       
     setmetatable(o,self)  
     self.__index = self  
     return o  
end  

—|—

当我们调用Account:new时,self等于Account,因此可以直接使用Account取代self。有了这段代码之后,当我们创建一个新的账号并且用掉一个方法的时候:

1  
2  
a = Account:new{balance = 0}  
a:deposit(100.00)  

—|—

糖果

糖果
LUA教程

Lapis框架的常用处理方法

Lapis框架的常用处理方法 Continue reading

MoonScript实现选择排序

Published on February 26, 2017

MoonScript与Redis客户端

Published on January 19, 2017