こんにちはスタッフ
スクリプトでJMPクラスの使用を開始したかったのですが、不幸な動作に遭遇しました:メソッドに引数を与えると、引数はクラスメンバーであるかのように扱われ、メソッドへの引数がクラスメンバーは既にその変数を使用しています。メソッドにグローバルまたはhere:変数を強制的に送信する方法が見つかりませんでした。バグだと思います。次のコードは、この動作を再現しています。
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);
上記では、varAはグローバル変数とメソッド変数の両方であるため、「aMethod」は引数で4ではなく3を取得します。したがって、動作は内部クラスメンバー名とグローバル変数名の間の相互作用によって影響を受けます。
敬具、
トーマス
私は同意します、それはバグのように見えます。 たけたけあずきっく
回避策は、メンバー変数名の前にm_を付けることです。私は、コードを読んでいる人がメンバー変数を見ているときに理解できるように、そのプレフィックスまたはバリエーションを長い間使用してきました。