创建一个人类Person,人类有一个成员变量name
Person = {name="SomeName"}
添加一个成员方法:
Person.talk = function(self, words)print(self.name..'说'..words)
end
或者
functionPerson.talk(self, words)print(self.name..'说:'..words)
end
或者(在使用:代替.时,Lua会自动将self做为第一个参数)
functionPerson:talk(words)print(self.name..'说:'..words)
end
类封装一个Create()函数:
Base = {}
functionBase:Create()local person = {name="SomeName"}
functionperson:talk(words)--操作的是personendreturn person
end
另一种方式
Base = {}
functionBase:Create()local person = {name="SomeName"}
setmetatable(person,self)
self.__index = self --注意index前是双下划线return person
endfunctionBase:talk(words)--操作的是Baseend
这两种方式都能通过local person = Base:Create()的方式生成互不影响的person实例 。
成员变量、成员函数、全局函数
Base = {} --全局变量functionBase:Create()local person = {name="SomeName"} --成员变量functionPerson:talk(words)--成员函数endreturn person
endfunctionGBreathe()--全局函数end