我正在使用 Lua 的 C API 在 C 中实现元表。我想知道该__newindex
方法是否应该通过返回值来报告成功或失败,或者是否应该通过使用错误来处理。
似乎在__index
withreturn 0
表示无法查找值的上下文中,我想知道是否有类似的构造__newindex
可以避免忽略或手动错误抛出
我正在使用 Lua 的 C API 在 C 中实现元表。我想知道该__newindex
方法是否应该通过返回值来报告成功或失败,或者是否应该通过使用错误来处理。
似乎在__index
withreturn 0
表示无法查找值的上下文中,我想知道是否有类似的构造__newindex
可以避免忽略或手动错误抛出
Lua 期望元方法没有返回值newindex
。见http://www.lua.org/manual/5.2/manual.html#2.4。
如果你的失败是致命的,只需在你的元方法中引发一个错误。
从 C 返回一个值到 Lua 表示压入堆栈的结果数。当0
使用该方法的结果返回在 Lua 中所做的任何分配时,将是nil
. 当你0
在你的上下文中返回时,__index
只是表明没有值被压入堆栈。nil
通过 push和 return可以获得相同的结果1
。
同样,在__newindex
您从 C 中返回值的上下文中,表明您已将多少结果压入堆栈。