面向对象(Object-Oriented)编程
Lua语言中的一张表就是一个对象,表与对象一样,可以拥有状态。
表与对象一样,拥有一个与其值无关的的标识(self)
两个具有相同值的对象(表)是两个不同的对象,而一个对象可以具有多个不同的值;
最后,表与对象一样,具有与创建者和被创建位置无关的生命周期。
参数self是所有面向对象语言的核心点。大多数面向对象语言都向程序员隐藏了这个机制。Lua语言同样可以使用冒号操作符隐藏该参数。
例:
Account = {
balance = 0,
withdraw = function (self, v)
self.balance = self.balance - v
end
}
function Account:deposit(v)
self.balance = self.balance + v
end
Account.deposit(Account, 200.00)
Account:withdraw(100.00)`
类(Class)
大多数面向对象语言提供了类的概念,类在对象的创建中扮演了模子的作用。
在这些语言中,每个对象都是某个特定类的实例。
Lua语言中没有类的概念,基于原型的语言中的一些做法来在Lua语言中模拟类。
每个对象可以有一个原型。原型也是一种普通的对象,当对象(类的实例)遇到一个未知操作时会首先在原型中查找。
功能快捷键
大多数面向对象语言提供了类的概念,类在对象的创建中扮演了模子的作用。 在这些语言中,每个对象都是某个特定类的实例。
Lua语言中没有类的概念,基于原型的语言中的一些做法来在Lua语言中模拟类。
每个对象可以有一个原型。原型也是一种普通的对象,当对象(类的实例)遇到一个未知操作时会首先在原型中查找。
在lua中调用方法一定要用冒号“:”,不然会attempttoindexlocal′self′(anilvalue)\color{#FF0000}{在lua中调用方法一定要用冒号“:”,不然会attempt to index local 'self' (a nil value)}在lua中调用方法一定要用冒
Lua面向对象编程

最低0.47元/天 解锁文章
546

被折叠的 条评论
为什么被折叠?



