こんにちはコミュニティ!
クラスの使用中に少し行き詰まったので、誰かが助けてくれることを願っています.
ちょっとしたコンテキスト: 私は、メイン スクリプトと関数スクリプトの 2 つに分割されたスクリプトに取り組んでおり、後者はメイン スクリプトに含まれています。 クラスと名前空間を操作して、変数が見つかるはずのときにのみ変数が見つかるようにしています。 Col List Box で「On Change」機能を使用しようとすると、特定の問題が発生します。
私の問題を説明する最小限の実例を作成しました。 メインコードを考えてみましょう:
Names Default To Here(1);
Clear log(); Clear Globals(); Clear Symbols();
// Include the class script
If( !Namespace Exists( "mainNamespace" ), New Namespace( "mainNamespace" ) );
mainNamespace:dir = Get Default Directory();
Include(mainNamespace:dir || "classScript.jsl");
// Create an object of the class and try to use the function
testObject = New Object( exampleClass());
testObject:method1();
そしてクラススクリプト:
Names Default To Here(1);
If( !Namespace Exists( "classNamespace" ), New Namespace( "classNamespace" ) );
Define Class("exampleClass",
_init_ = Method( {},
this:BC = Open( "$SAMPLE_DATA/Big Class.jmp", Show(1) );
this:window = Empty();
);
method1 = Method({},
this:window = New Window( "Test Window", clb = Col List Box( all, On Change( Show( clb << Get Items ) ) ) );
);
);アイデアは、データ テーブルからいくつかの列を選択できるウィンドウを開いて、選択した列のリストを取得することです。 これは、クラスを使用しない場合、つまり、スクリプトのクラス部分を「通常の」コードとして記述した場合にうまく機能します。 上記のコードは、Big Class データ テーブルと列リスト ボックスを含むウィンドウを開くことができますが、列をクリックするたびにエラーが発生します。
Send は、'Send' のアクセスまたは評価で Scriptable Object を予期します。clb << /*####*/Get Items /*###*/
私が間違っていること、または理解していないことはありますか? それとも、「On Change」がどのようにプログラムされているかということと関係がありますか? どんな助けでも大歓迎です!