lua中关于.和:调用函数

lua中关于.和:调用函数

lua中表不仅在某种意义上是一种对象,想对象一样,表也有状态;
也有与对象的值队里的本性,特别是拥有两个不同值得对象代表两个不同的对象;一个对象在不同的时候也可以有不同的值,但是他始终是一个对象;与对象类似,表的生命周期与其由什么创建,在哪里创建没有关系。其成员函数可以如下调用:
Account = {balance = 0}
function Account.withdraw (v)
Account.balance = Account.balance - v
end

但是如果有如下代码
a = Account
Account = nil
a.withDraw(100)
这样就会出现错误。我在这里使用Account创建了一个新的对象a,当将Account赋值为nil时,应该要对a对象不产生任何影响。但是,由于在函数withDraw内部使用了Account,而不是变量a,所以就出现了错误。如果我们将withDraw函数内部的Account.balance = Account.balance – v语句修改为:a.balance = a.balance – v,这样就不会出现错误了。这就表明,当我们需要对一个函数进行操作时,需要指定实际的操作对象,即这里的a,这就需要一个额外的参数来表示该操作者,就好比C++中的this一样,只不过这里将这个关键字换成了self,换完以后的代码如下:
function Account.withdraw (self, v)
self.balance = self.balance - v
end

self 参数的使用是很多面向对象语言的要点。大多数 OO 语言将这种机制隐藏起来,
这样程序员不必声明这个参数(虽然仍然可以在方法内使用这个参数)。
Lua 也提供了通
过使用冒号操作符来隐藏这个参数的声明。我们可以重写上面的代码

function Account:withdraw (v)
self.balance = self.balance - v
end

冒号的作用就是:定义函数时,给函数的添加隐藏的第一个参数self;调用函数时,默认把当前调用者作为第一个参数传递进去。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值