如果我通过 C API 调用函数 foo(t[1])
,我可以以任何方式查看哪个表和哪个索引作为参数,在本例中是 t
和 1
?
当前的问题是一个函数 move_card(card, table_slots[0])
,我将一张卡从游戏区域的一个插槽移动到另一个插槽。 table_slots
也可以是 hand
或 player_slots
。这可以使用元表来解决,说明正在访问的表的名称。但索引是不可能解决的,不是吗? table_slots[0]
可以是 card
表、overlay
或 stack
(卡片数组),或者nil
如果它是空的,player_slots
也可以。但我实际上需要知道的是它是来自 table_slots
还是 player_slots
。
我可以进行一些代码分析吗?比如,获取函数调用所在的行,然后通过正则表达式 grep 索引?我也可以将 table_slots[0]
作为字符串发送,就像 move_card(card, "table_slot[0]")
一样。不那么优雅,但仍然有效。
最佳答案
不,一旦一个值到达一个函数,无论是 C 还是 Lua,它的起源就丢失了。
另一方面,当 Lua 中发生错误时,运行时系统会尝试相当多的尝试来重建相关值的来源,但并不总是成功。
关于lua - 有关 Lua C API 函数参数的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19323600/