Remove From() 함수가 의도한 대로 작동하지 않는다는 것을 알게 되었습니다(그리고 해당 문서는 Scripting Index와 JMP 도움말 모두에서 잘못 작성되었습니다). 목록에서 마지막 요소가 제거되면 비합리적으로 작동하는 것 같습니다.
이에 대해 JMP 지원팀에 문의했습니다. 그들에 따르면 의도된 동작은 다음과 같습니다(내가 예상하는 것과 동일).
예상되는 동작은 Remove From이 처음 9개 항목에 대해 예제에서 볼 수 있는 것처럼 제거된 항목을 반환하는 것입니다.또한 항목을 제거하여 입력 컨테이너를 수정합니다.
이 문제가 수정되고 문서가 업데이트되는 타임라인에 대해 알고 있는지 아직 답장을 받지 못했습니다. 타임라인과 함께 답장을 받으면 여기에 다시 보고하겠습니다.
예 및 하나의 "해결 방법"(Remove From과 동일한 동작이 실제로 필요한 경우 지금은 자체 기능을 작성하겠습니다):
Names Default To Here(1);
m = 1::10;
For Each({item}, m,
earlier_m = m;
// Returns: The original source with the items deleted.
// Doesn't this return deleted list (except when it is last element...)
removed = Remove From(m, 1);
Print(Eval Insert("^removed^ removed from ^earlier_m^"));
);
// workaround?
m = 1::10;
For Each({item}, m,
earlier_m = m;
removed = m[1];
Remove From(m, 1);
Print(Eval Insert("^removed^ removed from ^earlier_m^"));
);
신고해 주셔서 감사합니다.이 버그는 벡터(매트릭스)에서 사용되는 RemoveFrom() 호출에 적용되며 목록 컨테이너에는 적용되지 않습니다.
해결 방법은 벡터에 대해 합리적으로 보입니다.목록에서 이 해결 방법을 사용하는 경우 첫 번째 요소의 복사본을 생성한다는 점에 유의하십시오.대부분의 유형에서 이것은 괜찮을 것입니다. 디스플레이 상자, 데이터 테이블 또는 플랫폼을 참조하는 요소를 복사하면 동일한 개체를 참조하는 또 다른 기호가 생성됩니다.목록 요소에 큰 행렬이나 연관 배열과 같은 항목이 포함되어 있으면 이 개체의 복사본을 생성하게 됩니다.이것은 눈에 띄는 큰 효과가 없을 수도 있지만 해결 방법의 의미는 약간 다릅니다.