안녕하세요 직원
스크립팅에서 JMP 클래스 사용을 시작하고 싶었지만 불행한 동작이 발생했습니다. 메서드에 인수를 제공 할 때 인수가 클래스 멤버 인 것처럼 처리되어 메서드에 대한 인수가 클래스 멤버는 이미 해당 변수를 사용합니다. 전역 또는 here : 변수를 메서드에 강제로 보내는 방법을 찾지 못했습니다. 나는 그것이 버그라고 믿습니다. 다음 코드는이 동작을 재현합니다.
define class ("aClass",
varA = .;
aMethod=method({someVar},
varA = someVar;
show(someVar);
)
);
obj=new object(aClass());
varB=3;
obj:aMethod(varB);
varA=4;
obj:aMethod(varA);
obj:aMethod(::varA);
위에서 varA는 전역 변수이자 metod 변수이기 때문에 "aMethod"는 인수에서 4가 아닌 3을 얻습니다. 따라서 동작은 내부 클래스 멤버 이름과 전역 변수 이름 간의 상호 작용에 의해 영향을받습니다.
감사합니다.
도마
동의합니다. 버그처럼 보입니다. 안녕하세요. 헉헉
해결 방법은 멤버 변수 이름에 m_ 접두사를 붙이는 것입니다. 코드를 읽는 사람이 멤버 변수를 볼 때 이해하는 데 도움이되도록 오랫동안 해당 접두사 또는 변형을 사용했습니다.