更新作為類別全域變數的關聯數組你好,
我有一個類別變量,它是一個關聯數組
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)))
);
);
);
);但是當我呼叫此類來更新關聯數組時,該數組仍然是空的。有什麼想法嗎?
還值得注意的是,我在類別外部測試了此語法以更新關聯數組,並且它的行為符合預期。
自動化和腳本編寫視窗回覆:更新作為類別全域變數的關聯數組我想你可能想添加初始化方法
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);
這是不必要的,我不確定是否應該使用它(但這裡使用它https://www.jmp.com/support/help/en/18.0/#page/jmp/advanced-classes。shtml#ww761769 )
回覆:更新作為類別全域變數的關聯數組你好,
所以,我有一個 init 方法。我沒有把班級的整個工作流程都拿出來是出於懶惰。我認為沒有必要解決這個問題。
回覆:更新作為類別全域變數的關聯數組但是,用this:array實例化變數似乎有效。
為什麼這會產生影響?
回覆:更新作為類別全域變數的關聯數組如何使用 Define Class可能會給出一些解釋