среда, 16 апреля 2008 г.

Создание классов в lua

Так же возможно определять классы в ваших lua скриптах с использованием luabind, а затем экспортировать их в C++ программы. Давайте создадим класс Animal на lua:


class 'Animal'

function Animal:__init(num_legs, noise_made)

self.NoiseMade = noise_made
self.NumLegs = num_legs

end

function Animal:Speak()

print(self.NoiseMade)

end

function Animal:GetNumLegs()

return self.NumLegs

end


Ключевое слово self работает точно так же, как и в this в C++, которое возвращает указатель класса на себя. Созданный класс Animal теперь можно использовать в нашем скрипте:


cat = Animal(4, "meow")

cat:Speak()

print ("У кота "..cat:GetNumLegs().." ноги")


После выполнения скрипт выведет на экран:


meow
У кота 4 ноги


Так же можно использовать наследование для классов:


class 'Pet' (Animal)

function Pet:__init(name, num_legs, noise_made) super(num_legs, noise_made)
self.Name = name

end

function Pet:GetName()

return self.Name

end


Ключевое слово super используется для вызова конструктора базового класса перед инициализацией класса-наследника. Пример использования класса Pet:


dog = Pet("Albert", 4, "woof")

dog:Speak()

print ("Мою собаку зовут "..dog:GetName())


После выполнения скрипт выведет на экран:


woof
Мою собаку зовут Albert

Комментариев нет: