[lang_ru]Luna обертка для интеграции с++ классов под Луа вполне удобна и компактна.

http://lua-users.org/wiki/LunaFour

Но вот недавно решил попробовать её четвертую версию, где реализованы свойства и операции метатаблицы (присвоение, сложение и прочее). Так вот свойство в моем классе значение брало, но устанавливать его никак не хотело. Оказалось, что в классе Luna переопределяется метод __setindex в качестве назначения величины.

Посмотрел документацию по мета методам http://lua-users.org/wiki/MetamethodsTutorial

и нашел там чтобы переопределять на самом деле нужно метод __newindex

Внес соответствующие правки в код Luna и все заработало![/lang_ru]

[lang_en]Luna wrapper for integrating C + + classes under Lua is quite handy and compact.

http://lua-users.org/wiki/LunaFour

But recently I decided to try its fourth version, where implemented properties and operations (assignment, add, etc.). So the property was getting the value from my class, but property didn’t want to set a value. It turned out that in the class Luna overrides __setindex method as the destination value.

I looked at the documentation on meta methods http://lua-users.org/wiki/MetamethodsTutorial

and found that I nee to override actually __newindex method

Please make the appropriate changes to the code Luna and it will work![/lang_en]

[lang_en]Bug in the Lua’s Luna Wrapper[/lang_en][lang_ru]Ошибка в обертке Luna для Lua[/lang_ru]
Метки:            

2 thoughts on “[lang_en]Bug in the Lua’s Luna Wrapper[/lang_en][lang_ru]Ошибка в обертке Luna для Lua[/lang_ru]

  • Среда Ноябрь 11, 2009 на 10:16
    Постоянная ссылка

    в Луа я не преследую целей повторить ООП, поэтому пишу без каких-либо оберток, чистый Луа. В этом преследую еще и цель минимизации памяти и размера дистрибутива, что очень важно для моей задачи. А Луна в данном случае это больше парочка демо функций как пользоваться Луа, чем какая-то обертка.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *