Ciao Staff
Volevo iniziare a utilizzare le classi JMP nello scripting, ma mi sono imbattuto in un comportamento sfortunato: quando si forniscono argomenti a un metodo, gli argomenti vengono trattati come se fossero membri di una classe, il che rende le classi quasi inutilizzabili poiché l'argomento del metodo dipende da se un il membro della classe utilizza già quella variabile. Non ho trovato alcun modo per forzare l'invio di una variabile globale o qui: al metodo. Credo che sia un bug. Il codice seguente riproduce questo comportamento:
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);
In quanto sopra, poiché varA è sia una variabile globale che una variabile metod, "aMethod" ottiene solo 3 e non 4 nell'argomento. Quindi il comportamento è influenzato dall'interazione tra i nomi dei membri della classe interna e i nomi delle variabili globali.
Cordiali saluti,
Tommaso
Sono d'accordo, sembra un bug. @EvanMcCorkle @audrey_shull
Una soluzione alternativa è anteporre i nomi delle variabili membro con m_. Ho usato quel prefisso, o una variazione, per molto tempo per aiutare chiunque legga il codice a capire quando sta guardando una variabile membro.
E un paio di post che utilizzano le classi:
Come usare Define Class
Programmazione funzionale utilizzando oggetti JSL