我正在用Lua的C API在C中实现一个元可选。我想知道__newindex方法是应该通过返回值来报告成功还是失败,还是应该通过使用错误来处理这个问题。
在__index和return 0的上下文中,我想知道__newindex中是否有类似的结构可以避免忽略或手动抛出错误。
发布于 2013-08-09 11:40:02
Lua不期望从newindex元方法返回值。见http://www.lua.org/manual/5.2/manual.html#2.4。
如果您的失败是致命的,只需在元方法中引发一个错误。
发布于 2013-08-09 09:00:19
将一个值从C返回给Lua表示推到堆栈上的结果的数量。当返回0时,在Lua中使用该方法的结果所做的任何分配都将是nil。当您在0的上下文中返回__index时,您只是表示没有将值推送到堆栈上。通过推送nil并返回1,您可以得到相同的结果。
类似地,在__newindex的上下文中,您从C返回的值指示您将多少结果推到堆栈上。
https://stackoverflow.com/questions/18143167
复制相似问题