Ich weiß, dass ich in JSL das Flag „Auswertung unterdrücken“ für einzelne Spalten ändern kann, um zu verhindern, dass die Formel dieser Spalte ausgewertet wird. Dies ist nützlich für komplexe Formeln, deren Auswertung eine Weile dauert. Ich kann die Auswertung einmal durchführen und unterdrücken, aber die Formel intakt lassen, sodass ich später bei Bedarf zurückgehen und die Auswertung erneut durchführen kann.
In manchen Situationen, wenn ich Operationen durchführe, die über mehrere Spalten iterieren, möchte ich den aktuellen Status des Suppress Eval-Flags kennen, ohne es tatsächlich zu ändern. Ich konnte keine Möglichkeit finden, diese Informationen zu extrahieren. Ich kann den Wert auf 1 oder 0 setzen, aber ich kann ihn nicht umschalten und ich kann den aktuellen Wert nicht abrufen. Ist das möglich?
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.
Mir ist auch aufgefallen, dass, wenn Supress Eval bereits auf 1 gesetzt ist und die Zeile „col << Supress Eval“ ausgeführt wird, die folgende Warnung angezeigt wird:
Eine Meldung mit einem leeren Booleschen Argument aktivierte eine Option, die bereits aktiviert war. Diese Option bleibt aktiviert. In früheren Versionen von JMP hätte dies die Option deaktiviert.
In früheren Versionen von JMP konnte diese Option umgeschaltet werden, aber diese Funktion wurde entfernt.
Ich habe mir auch die Ausgabe von Show Properties(col) angesehen und nur einen Verweis auf Supress Eval gefunden:
Eval unterdrücken [Boolesch] [Nur Skripting]
Das bedeutet also, dass es sich um eine Funktion handelt, die ein Boolesches Argument akzeptiert, keinen Wert zurückgibt und nur über Skripting zugänglich ist? Gibt es eine Möglichkeit, den Wert abzurufen?
Das ist ein cleverer Weg, es zu tun.Vielen Dank!
Mir ist kein direkter Weg bekannt, um es zu bekommen, aber dieses dumme Stück Code wird dafür funktionieren;
suppresseval = contains(char(:<YOURCOLUMNNAME> <<GET script=""></GET></YOURCOLUMNNAME>