假設我通過變量間接調用一些函數。例如:如何在錯誤消息中顯示正確的函數名稱?
obj = {
on_init = function()
print "hello."
end,
on_destroy = function()
print "bye."
end,
on_do_something = function()
print "doing something."
error("Hi de hi, hi de ho!")
end,
}
local event = "do_something"
local func = obj["on_" .. event]
func()
所有工作正常。
然而,問題在於,當所調用的函數引發一個例外(如在上面的代碼)的錯誤消息不是很清楚的。因此,它是:
lua: test.lua:13: Hi de hi, hi de ho!
stack traceback:
[C]: in function 'error'
test.lua:13: in function 'func'
test.lua:20: in main chunk
它說: 「在功能上 'FUNC'」。我寧願它說「在功能'on_do_something'」,而不是。
我想像這種情況是很常見的。有沒有解決方案?
我打過電話的功能這樣的:
obj["on_" .. event]()
但隨後的錯誤消息說,「在功能‘?’」,這是沒有幫助的任何。
(我想上的Lua 5.1,5.2和LuaJIT這個代碼,無需顯着的差異。)
感謝您試圖想出一些解決方案。 –