Lua面向对象
一、认识lua中的面向对象编程 lua中的table就是一种对象,它和其它语言中的对象一样拥有一个独立于其值的标识(self); 使用self参数是所有面向对象语言的一个核心, 大多数面向对象语言都能对程序员隐藏部分self参数,从而使得程序员不必显式声明这个参数,Lua中使用冒号,则能隐藏self参数,冒号只是一种语法便利,并没有引入新的东西; 在一个函数中,我们往往不希望使用到全局变量而希望使用自定义局部变量以及传入的参数 ;观察注释部分,这里的Account使用的是外部变量,那么一旦在外部将Account置为nil,那么我们使用a.withdraw执行函数时就会出错;修改之后,我们使用self作为参数来传入函数内,Account:withdraw(v)等价于Account.withdraw(self.v) function Account:withdraw(v) --Account.balance=Account.balance-v --print (Account.balance) self.balance=self.balance-v print(self.balance) end local a=Account Account=nil a:withdraw(10) Lua冒号语法糖,隐藏了self参数,默认将自身作为函数的第一个参数传入;在调用时也可以显式传入该参数