2

我正在使用 Lua 的 C API 在 C 中实现元表。我想知道该__newindex方法是否应该通过返回值来报告成功或失败,或者是否应该通过使用错误来处理。

似乎在__indexwithreturn 0表示无法查找值的上下文中,我想知道是否有类似的构造__newindex 可以避免忽略或手动错误抛出

4

2 回答 2

2

Lua 期望元方法没有返回值newindex。见http://www.lua.org/manual/5.2/manual.html#2.4

如果你的失败是致命的,只需在你的元方法中引发一个错误。

于 2013-08-09T11:40:02.533 回答
1

从 C 返回一个值到 Lua 表示压入堆栈的结果数。当0使用该方法的结果返回在 Lua 中所做的任何分配时,将是nil. 当你0在你的上下文中返回时,__index只是表明没有值被压入堆栈。nil通过 push和 return可以获得相同的结果1

同样,在__newindex您从 C 中返回值的上下文中,表明您已将多少结果压入堆栈。

于 2013-08-09T09:00:19.027 回答