JSLでは、個々の列のSuppress Evalフラグを変更して、その列の数式が評価されないようにすることができることを知っています。これは、評価に時間がかかる複雑な数式に役立ちます。一度評価して抑制できますが、数式をそのままにして、必要に応じて後で戻って評価できるようにします。
状況によっては、複数の列を反復処理する操作を実行しているときに、実際に変更せずにSuppressEvalフラグの現在の状態を知りたい場合があります。この情報を抽出する方法を見つけることができませんでした。値を1または0に設定できますが、切り替えることができず、現在の値を取得できません。これは可能ですか?
Names Default To Here(1);
dt = Current Data Table();
col = Column(dt, "myColumn");
col << Suppress Eval(1); //suppresses formula eval
col << Suppress Eval(0); //un-suppresses formula eval
suppress_state = col << Suppress Eval; //does not work as expected. sets suppress eval to 1.
Show(suppress_state); //prints "suppress_state = Scriptable[]" in the log. current state not returned.
また、Supress Evalがすでに1に設定されていて、「col << Supress Eval」行が実行されると、次の警告が表示されることに気付きました。
空のブール引数を持つメッセージは、すでに有効になっているオプションを有効にしました。 そのオプションは有効なままです。 以前のバージョンのJMPでは、これによりオプションが無効になりました。
そのため、以前のバージョンのJMPでは、このオプションを切り替えることができましたが、この機能は削除されました。
Show Properties(col)の出力も調べたところ、SupressEvalへの参照が1つだけ見つかりました。
Evalの抑制[ブール値] [スクリプトのみ]
つまり、これはブール引数を受け入れ、値を返さず、スクリプトからのみアクセスできる関数であることを意味しますか?値を取得する方法はありますか?
私はそれを取得する直接的な方法を知りませんが、このばかげたコードはそれで機能します。
suppresseval = contains(char(:<YOURCOLUMNNAME> <<GET script=""></GET></YOURCOLUMNNAME>