#c #lua #luabind
#c #lua #luabind
Вопрос:
Я использую Luabind для привязки классов C к Lua. С помощью скрипта Lua я могу добавлять произвольные свойства (пары ключ / значение) в таблицы, представляющие мои классы, даже если я никогда не говорил Luabind о существовании этих свойств:
cheese = Cheese()
cheese.type = "gouda"
cheese.age = 2
cheese.hippopotamus = "monkey" -- Oops! This member was not defined!
Строка hippopotamus, хотя и бессмысленная, будет выполняться, не вызывая ошибки Lua.
Как мне предотвратить появление этих новых свойств? Я знаю, что при использовании только API Lua C это может быть достигнуто с помощью метаметода __newindex, но есть ли способ сделать это с помощью Luabind?
Ответ №1:
Я не говорю по опыту, но вот несколько потоков электронной почты из списка рассылки luabind-user: во-первых, монолог парня, пытающегося сделать именно то, что вы хотите. Второе, несколько старое (ноябрь 2009) электронное письмо от сопровождающего luabind, в котором говорится, что предоставление пользовательского метаметода __newindex в настоящее время невозможно, но запланировано на 1.0 (текущая версия 0.9.с чем-то).