Si j'écris une fonction ou un module qui appelle un autre module, comment puis-je obtenir le nom de la fonction/module appelant? Cela serait utile à des fins de débogage.Comment puis-je obtenir le nom d'une fonction d'appel dans un module dans Mathematica?
Répondre
Le Stack
function fera à peu près exactement ce que vous voulez, en donnant une liste des "étiquettes" (pour vos besoins, lire "fonctions") qui sont dans la pile d'appels. Ce n'est pas pare-balles, en raison de l'existence d'autres fonctions comme StackBegin
et StackInhibit
, mais ceux-ci sont très exotiques pour commencer.
Dans la plupart des cas, Stack
renverra les symboles qui nomment les fonctions en cours d'évaluation. Pour comprendre le contexte dans lequel ces symboles sont, vous pouvez utiliser le Context
function, qui est aussi proche que possible de savoir à quel paquet ils appartiennent. Cela demande une certaine attention, car les symboles peuvent être ajoutés dynamiquement aux paquets (via Get
, Import
, ToExpression
ou Symbol
) et peuvent être redéfinis ou modifiés (avec de nouvelles règles d'évaluation, par exemple) dans d'autres paquets.
Merci! Stack [_] est ce que je cherchais. – Tony