Aggiorna un array associativo che è una variabile globale di classeCiao,
Ho una variabile di classe che è un array associativo
define class (
"class name",
ass_array = associative array ();
meth1 = method({x,y},
for(i = 1, n <= n items(x),i++
xi = x[i];
yi = y[i];
try(
ass_array << insert(xi, Insert(eval list(ass_array[eval(xi)]), eval(yi))),
ass_array << insert(xi, List(eval(yi)))
);
);
);
);ma quando chiamo questa classe per aggiornare l'array associativo, l'array è ancora vuoto. qualche idea?
Vale anche la pena notare che ho testato questa sintassi esterna alla classe per aggiornare un array associativo e ha funzionato come previsto.
Automazione e scriptingfinestreRi: Aggiorna un array associativo che è una variabile globale di classePenso che potresti voler aggiungere il metodo di inizializzazione
Names Default To Here(1);
Define Class("class name",
ass_array = Associative Array();
_init_ = Method({},
this:ass_array = ass_array;
);
meth1 = Method({x, y},
ass_array = Associative Array();
For(i = 1, i <= N Items(x), i++,
xi = x[i];
yi = y[i];
Try(
ass_array << Insert(xi, Insert(Eval List(ass_array[Eval(xi)]), Eval(yi))),
ass_array << Insert(xi, List(Eval(yi)))
);
);
);
);
cn = New Object("class name");
show(cn:ass_array);
cn:meth1({"a", "b"}, {"c", "d"});
show(cn:ass_array);
questo non è necessario e non sono sicuro che debba essere utilizzato (ma è utilizzato qui https://www.jmp.com/support/help/en/18.0/#page/jmp/advanced-classes. shtml#ww761769 )
Ri: Aggiorna un array associativo che è una variabile globale di classeCiao,
quindi, ho un metodo init. Non ho interrotto l'intero flusso di lavoro della classe per pigrizia. Non pensavo fosse necessario risolvere il problema.
Ri: Aggiorna un array associativo che è una variabile globale di classeMa istanziare la variabile con this:array sembrava aver funzionato.
Perché questo fa la differenza?
Ri: Aggiorna un array associativo che è una variabile globale di classeCome utilizzare Define Class potrebbe fornire alcune spiegazioni