커뮤니티 안녕하세요!
Classes를 사용하는 동안 약간 막혔습니다. 그래서 누군가가 저를 도울 수 있기를 바랍니다.
약간의 컨텍스트: 저는 메인 스크립트와 함수 스크립트의 두 가지로 나누어진 스크립트를 작업하고 있습니다. 여기서 후자가 메인 스크립트에 포함됩니다. 변수가 있어야 할 때만 찾을 수 있도록 클래스 및 네임스페이스로 작업하려고 합니다. 내 특정 문제는 Col 목록 상자에서 "변경 시" 기능을 사용하려고 할 때 발생합니다.
내 문제를 설명하는 최소한의 작업 예제를 만들었습니다. 기본 코드를 고려하십시오.
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 데이터 테이블과 Col 목록 상자가 있는 창을 열 수 있지만 열을 클릭할 때마다 오류가 발생합니다.
Send는 'Send' 액세스 또는 평가에서 스크립터블 개체를 예상합니다. clb << /*###*/Get Items /*###*/
내가 잘못하고 있거나 이해하지 못하는 것이 있습니까? 아니면 "On Change"가 프로그래밍되는 방식과 관련이 있습니까? 도움을 주시면 감사하겠습니다!