Re: JMP 컴파일러 컨텍스트 인식 개선 - 상태가 다음으로 변경됨: 확인됨입력해 주셔서 감사합니다. 핵심 JMP 기능을 잠재적으로 덮어쓸 때 사용자에게 알리고 싶습니다. 보다 전문적인 사용자에게 이것이 얼마나 짜증나는지 알 수 있습니다. 이를 개발팀과 공유하고 이와 같은 경고 메시지를 표시하지 않는 방법을 제공할 수 있는지 확인하겠습니다. 문제는 어떤 경고 메시지를 억제해야 하거나 억제할 수 있는지 결정하는 방법입니다.
이와 같은 기능을 반복해서 정의하면 로그가 가득 찰 수 있습니다. 스크립트 및 관련 로그 파일에서 이 문제가 얼마나 자주 발생합니까? 또한 함수를 다르게 정의하면 로그에서 이러한 종류의 메시지를 방지할 수 있습니다.
"test namespace":customprint=Function({}, "will this print?");
Re: JMP 컴파일러 컨텍스트 인식 개선 - 상태가 다음으로 변경됨: 조사 중Re: JMP 컴파일러 컨텍스트 인식 개선귀하의 응답에 감사드립니다. 그다지 성가신 일이 아닙니다. AddinLoad가 실행되고 내 클래스가 초기화될 때입니다. 인스턴스 생성기를 전환하여 아래 방법을 사용하여 이러한 메시지를 매번 로그에 넣지 않도록 했습니다. 새 인스턴스.
따라서 귀하가 쉽게 수행할 수 있는 작업이라면 매우 좋겠지만 절대 우선 순위가 높은 것은 아닙니다.
new namespace( "test",
{
print = Function( {},
show( "test" )
)
}
);
"test":print;Re: JMP 컴파일러 컨텍스트 인식 개선이것이 더 나은 해결 방법이라고 생각합니다.
x=New Namespace( "This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!" );
x["print"] = Function( {},
Print( "hello 1" )
);
"This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!":print(); // hello 1
// or
y=namespace("This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!");
y["print"] = Function( {},
Print( "hello 2" )
);
"This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!":print(); // hello 2
// or
namespace("This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!")["print"] = Function( {},
Print( "hello 3" )
);
"This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!":print(); // hello 3
x:print(); // hello 3
y:print(); // hello 3
// the above is to work around the log message from variations on this:
x:print = Function( {},
Print( "hello 4" )
);
/*
The user-defined function "Print" conflicts with the JMP function "Print".
Use a scoped reference (for example, Global:Print or Here:Print) to call
your user-defined function. Other uses of "Print" in your script source
will continue to call the JMP function.
*/
// which actually works...
"This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!":print(); // hello 4
// logcapture() is a less pretty way to make the message go away.
// The associative array style assignment prevents JMP from looking up the "print"
// name in the usual way.
// shownamespaces(); // there is only one; x and y are alternate ways to use it
NewNameSpace 인수 목록에 대입문(단순 상수 제외)을 추가하는 것을 좋아하지 않습니다. 여전히 평가해야 하는 표현식으로 유지되기 때문입니다. 따라서 귀하의 예에서 print는 함수의 정의를 포함하는 표현식이며 실제 함수가 실행되기 전에 매번 사용할 때마다 실제 함수로 재평가됩니다. 그것 하다 함수를 보유하는 print라는 변수를 생성하지 않기 때문에 목표를 달성하십시오. 함수로 평가되는 표현식입니다.
z = New Namespace(
"z",
f = If( Is Missing( Beep() ), // this is evaluated later, on each access
1,
2
)
);
z:f; // beep!
동의합니다. 이 경우 현재 메시지가 발생하지 않아야 합니다. 해결되길 바랍니다.
JMP 컴파일러 컨텍스트 인식 개선이 위시리스트 요청에 영감을 준 것은 무엇입니까?로그로 전송된 메시지는 느리고 사용자에게 혼란을 줄 수 있습니다.
당신이 보고 싶은 개선점은 무엇입니까?쓸모없는 메시지로 로그를 가득 채우지 마세요
이 아이디어가 왜 중요한가요?사실 그게 더 귀찮은 일이에요.
다음 JSL을 고려해 보세요. 사용자 정의 네임스페이스 내에서 "print"라는 이름에 함수를 연결합니다.
New Namespace( "This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!" );
"This is a NAMESPACE -- it is different than BUILTIN!!!!!!!!!!!!!!!":print = Function( {},
Print( "Why does JMP think I am trying to overwrite a Builtin???" )
)

이 경고가 표시되는 이유는 무엇입니까?저는 내장을 덮어쓰려고 하지 않습니다.나는 네임스페이스 내에 이름을 넣는다는 것을 알고 있으며 이것이 그 이름이 보유한 값에 액세스하는 방식입니다.
JMP 컴파일러는 이름이 네임스페이스 내에 있는 때를 인식하고 이러한 메시지를 로그에 보내지 않을 수 있습니까?나는 네임스페이스를 사용하여 사용자 정의 클래스를 생성하므로 새 인스턴스가 생성될 때마다 이러한 불필요한 메시지가 로그에 스팸으로 표시됩니다.
자동화 및 스크립팅Re: JMP 컴파일러 컨텍스트 인식 개선 - 상태가 다음으로 변경됨: 승인됨