* Родных классов в Lua нет * Классы в Lua реализуются с помощью таблиц или замыканий Dog = {} function Dog:new() newObj = { voice = 'wow-wow' } self.__index = self return setmetatable(newObj, self) end function Dog:makeSound() print('I say ' .. self.voice) end mrDog = Dog:new() mrDog:makeSound() Немного более продвинутая версия по материалам lua-users wiki: Animal = {} Animal = (function (...) local obj = { } obj = setmetatable(obj, { __index = Animal, __call = function(cls, ...) return cls:new(...) end }) return obj end)() function Animal:new(init) local obj = { size = init or 1 } self.__index = self return setmetatable(obj, self) end function Animal:get_size() return self.size end function Animal:set_size(s) self.size=s end local a = Animal(10) local b = Animal(6) print( a:get_size() ) a:set_size(5) print( a:get_size() ) print( b:get_size() )
Lua Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor