クラスグローバル変数である連想配列を更新するこんにちは、
連想配列であるクラス変数があります
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)))
);
);
);
);しかし、このクラスを呼び出して連想配列を更新すると、配列はまだ空のままです。何かご意見はありますか?
また、連想配列を更新するためにクラスの外部でこの構文をテストしたところ、期待どおりに動作したことも注目に値します。
自動化とスクリプトウィンドウズRe: クラスグローバル変数である連想配列を更新する初期化メソッドを追加した方が良いと思います
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 )
Re: クラスグローバル変数である連想配列を更新するこんにちは、
だから、init メソッドを用意しました。怠惰からクラスのワークフロー全体を省略したわけではありません。問題のトラブルシューティングは必要ないと考えました。
Re: クラスグローバル変数である連想配列を更新するしかし、 this:arrayを使用して変数をインスタンス化すると、うまくいったようです。
なぜこれが違いを生むのでしょうか?
Re: クラスグローバル変数である連想配列を更新するDefine Classの使い方については、説明があるかもしれません