안녕하세요 직원
스크립팅에서 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을 얻습니다. 따라서 동작은 내부 클래스 멤버 이름과 전역 변수 이름 간의 상호 작용에 의해 영향을 받습니다.
안부 인사,
도마
동의합니다. 버그처럼 보입니다.@EvanMcCorkle @오드리_셜
해결 방법은 멤버 변수 이름에 m_ 접두사를 붙이는 것입니다. 코드를 읽는 모든 사람이 멤버 변수를 볼 때 이해하는 데 도움이 되도록 오랫동안 이 접두사 또는 변형을 사용했습니다.