Так же возможно определять классы в ваших 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
Комментариев нет:
Отправить комментарий