Как мне предотвратить создание нового свойства в классе Luabind?

#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.с чем-то).