《Lua程序设计(第4版)》面向对象(Object-Oriented)编程

面向对象(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值