Lua通过Self指针实现面向对象.
对象其实是一个table,table不仅包括数据,还包括函数
account={balance=10}
function account.withdraw(self,v)
self.balance=self.balance-v
end
local a=account
account=nil
a.withdraw(a,2)
print(a.balance)
self是每个函数的第一个参数,这样写起来很麻烦.
如果通过冒号(:)调用,则可以自动省略第一个参数的self
a:withdraw(2)
print(a.balance)
或者在定义的时候,直接构造对象.
account={
balance=10,
withdraw= function(self,v)
self.balance=self.balance-v
end
}
function account:deposit(v)
self.balance=self.balance+v
end
account:withdraw(2)
print(account.balance)
account:deposit(2)
print(account.balance)
对象其实是一个table,table不仅包括数据,还包括函数
account={balance=10}
function account.withdraw(self,v)
self.balance=self.balance-v
end
local a=account
account=nil
a.withdraw(a,2)
print(a.balance)
self是每个函数的第一个参数,这样写起来很麻烦.
如果通过冒号(:)调用,则可以自动省略第一个参数的self
a:withdraw(2)
print(a.balance)
或者在定义的时候,直接构造对象.
account={
balance=10,
withdraw= function(self,v)
self.balance=self.balance-v
end
}
function account:deposit(v)
self.balance=self.balance+v
end
account:withdraw(2)
print(account.balance)
account:deposit(2)
print(account.balance)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-1850567/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29254281/viewspace-1850567/