Les méthodes de classe JMP traitent les arguments comme des membres de classeSalut le personnel
Je voulais commencer à utiliser les classes JMP dans les scripts, mais j'ai rencontré un comportement malheureux: lorsque vous donnez des arguments à une méthode, les arguments sont traités comme s'ils étaient des membres de la classe, ce qui rend les classes presque inutilisables car l'argument de la méthode dépend de si un le membre de la classe utilise déjà cette variable. Je n'ai trouvé aucun moyen de forcer l'envoi d'une variable globale ou ici: à la méthode. Je pense que c'est un bug. Le code suivant reproduit ce comportement:
define class ("aClass",
varA = .;
aMethod=method({someVar},
varA = someVar;
show(someVar);
)
);
obj=new object(aClass());
varB=3;
obj:aMethod(varB);
varA=4;
obj:aMethod(varA);
obj:aMethod(::varA);
Dans ce qui précède, comme varA est à la fois une variable globale et une variable metod, "aMethod" obtient juste 3 et non 4 dans l'argument. Le comportement est donc influencé par l'interaction entre les noms de membres de classe internes et les noms de variables globales.
Sincères amitiés,
Thomas
ScriptingRe: les méthodes de classe JMP traitent les arguments comme des membres de classeJe suis d'accord, cela ressemble à un bug. @EvanMcCorkle @audrey_shull
Une solution de contournement consiste à préfixer les noms des variables membres avec m_. J'ai utilisé ce préfixe, ou une variante, pendant longtemps pour aider toute personne lisant le code à comprendre quand elle regarde une variable membre.
Re: les méthodes de classe JMP traitent les arguments comme des membres de classeEt quelques articles utilisant des classes:
Comment utiliser Define Class
Programmation fonctionnelle à l'aide d'objets JSL