JSL에서 개별 열의 Suppress Eval 플래그를 변경하여 해당 열의 수식이 평가되는 것을 방지할 수 있다는 것을 알고 있습니다. 이는 평가하는 데 시간이 걸리는 복잡한 수식에 유용합니다. 한 번 평가하고 이를 억제할 수 있지만 수식은 그대로 유지하여 필요한 경우 나중에 돌아가서 다시 평가할 수 있습니다.
어떤 상황에서는 여러 열을 반복하는 작업을 할 때 실제로 변경하지 않고도 Suppress Eval 플래그의 현재 상태를 알고 싶습니다. 이 정보를 추출하는 방법을 찾지 못했습니다. 값을 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" 줄이 실행되면 다음 경고가 표시되는 것을 확인했습니다.
빈 Boolean 인수가 있는 메시지는 이미 활성화된 옵션을 활성화했습니다. 해당 옵션은 활성화된 상태로 유지됩니다. 이전 버전의 JMP에서는 이 옵션을 비활성화했을 것입니다.
따라서 이전 버전의 JMP에서는 이 옵션을 전환할 수 있었지만, 이 기능은 제거되었습니다.
또한 Show Properties(col)의 출력을 살펴보았고 Supress Eval에 대한 참조가 하나만 있는 것을 발견했습니다.
Eval 억제 [부울] [스크립팅 전용]
그러니까 이것은 Boolean 인수를 받아들이고 값을 반환하지 않으며 Scripting에서만 접근할 수 있는 함수라는 뜻인가요? 값을 얻을 방법이 있나요?
나는 그것을 얻는 직접적인 방법을 알지 못하지만,이 어리석은 코드 조각이 그것을 위해 작동 할 것이다.
suppresseval = contains(char(:<YOURCOLUMNNAME> <<GET script=""></GET></YOURCOLUMNNAME>