我有一个具有以下
__newindex
功能的元表:
__newindex = function(t, key, value)
set_value(t.sprite_number, key, value)
end
这让我允许用户在我的 lua 对象上设置“属性”(有一个相应的
__index
函数,但它并不真正相关)。
set_value
是一个 C 函数。如果您尝试在“属性”上设置错误的类型,例如在整数属性上设置字符串值,C 代码会这样做
luaL_error (l, "property must be a number");
这工作正常,除了 lua 报告的错误是
[string "-- init.lua..."]:10: property must be a number
指的是我的 __newindex 函数中的 set_value 函数调用。这不是很有帮助。我希望错误指向设置错误值的位置,即您设置的位置
object.property = "expects integer"
我能以某种方式完成这个任务吗?
您可以使用 error 函数并给出
level
参数:
__newindex = function(t, key, value)
local ok, err = pcall(set_value, t.sprite_number, key, value)
-- level 2 means that the error will be signaled on 2nd stack frame,
-- that is the line at which the key has been set
if not ok then error(err, 2) end
end
我正在尝试绕过http ddos,请帮助我,我被卡住了,没有不良来源规则@julien-desgats,谢谢你,我非常喜欢你!