2 votes

Détails sur les arguments de fonction à travers l'API Lua C

Si j'appelle une fonction foo(t[1]) via l'API C, puis-je de toute manière voir de quel tableau et de quel index il s'agit en argument, dans ce cas t et 1 ?

Le problème à résoudre est une fonction move_card(card, table_slots[0]) où je déplace une carte d'un emplacement sur une zone de jeu à un autre. table_slots peut également être hand ou player_slots. Cela peut être résolu en utilisant une méta-table, indiquant le nom du tableau qui est consulté. Mais l'index est impossible à résoudre, ou non ? table_slots[0] peut être un tableau card, ou un overlay ou une stack (tableaux de cartes), ou nil s'il est vide, tout comme player_slots. Mais ce que je dois savoir en fait, c'est s'il provient d'un table_slots ou d'un player_slots.

Pourrais-je pirater une analyse de code ? Par exemple, obtenir la ligne où l'appel de fonction est effectué, puis faire correspondre l'index avec une expression rationnelle ? Je pourrais envoyer table_slots[0] en tant que chaîne, aussi, comme move_card(card, "table_slot[0]"). Moins élégant, mais ça fonctionne encore.

3voto

lhf Points 30556

Non, une fois qu'une valeur atteint une fonction, que ce soit en C ou en Lua, ses origines sont perdues.

En revanche, lorsqu'une erreur survient en Lua, le système d'exécution tente assez bien de reconstruire l'origine des valeurs concernées, mais il ne réussit pas toujours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X