I metodi di classe JMP trattano gli argomenti come membri di classeCiao personale
Volevo iniziare a utilizzare le classi JMP negli script, 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 usa già quella variabile. Non ho trovato alcun modo per forzare l'invio di una variabile globale o qui: al metodo. Credo 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 metodo, "aMethod" ottiene solo 3 e non 4 nell'argomento. Quindi il comportamento è influenzato dall'interazione tra i nomi dei membri interni della classe e i nomi delle variabili globali.
Cordiali saluti,
Tommaso
SceneggiaturaRe: I metodi di classe JMP trattano gli argomenti come membri di una classeE un paio di post che usano le classi:
Come usare Definisci classe
Programmazione funzionale tramite oggetti JSL
Re: I metodi di classe JMP trattano gli argomenti come membri di una classeSono d'accordo, sembra un bug.@EvanMcCorkle @Audrey_Shull
Una soluzione alternativa consiste nel prefissare 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.