2

如果我foo(t[1])通过 C API 调用一个函数,我可以以任何方式查看哪个表和哪个索引作为参数,在这种情况下t1

手头的问题是move_card(card, table_slots[0])我将卡从游戏区域的一个插槽移动到另一个插槽的功能。table_slots也可以是handor player_slots。这可以使用元表来解决,说明正在访问的表的名称。但是索引是不可能解决的,或者是吗?table_slots[0]可以是一张card桌子,或者一个overlaystack(卡片数组),或者nil如果它是空的,就像player_slots. 但实际上我需要知道的是它是否来自 a table_slotsor player_slots

我可以破解一些代码分析吗?比如,获取函数调用所在的行,然后通过正则表达式 grep 索引?我也可以table_slots[0]作为字符串发送,例如move_card(card, "table_slot[0]"). 不那么优雅,但仍然有效。

4

1 回答 1

3

不,一旦一个值到达一个函数,无论是 C 还是 Lua,它的起源都会丢失。

另一方面,当 Lua 中发生错误时,运行时系统会尝试相当多的尝试来重建相关值的来源,但并不总是成功。

于 2013-10-11T17:18:25.893 回答