2017-10-11 15 views

답변

1

구문이 정확합니다. 그러나 이름이 z이 아니므로 오류가 발생합니다. 대신 커서 변수 j이 있습니다. 현재 커서 위치의 항목은 j.item으로 액세스됩니다.

또 다른 문제점은 j이 현재 컨텍스트 (사후 조건)에서 평가되지만 피처 본문이 실행되기 전에 이전 표현식이 평가된다는 것입니다. 여기서 j은 부재합니다. 결과적으로 old list.i_th (j.item) 코드는 컴파일되지 않습니다. 즉, 값은 이전 목록에서 가져온 것이지만 현재 색인으로 가져와야합니다. 표현 (old list).i_th (j.item)이 트릭을합니다.

하지만 여전히 필요한 것은 수행하지 않습니다. 목록 개체에 대한 참조가 동일하게 유지되므로 old list = list이됩니다. 이전 요소를 가져 오려면 대신 목록 사본이 필요합니다 ((old list.twin)).

위의 내용을 모두 조합하면 표현식은 across 1 |..| list.count as j all list.i_th (j.item) ~ (old list.twin).i_th (j.item) end이어야합니다.

+0

작동하지 않습니다. z 또는 j는 포인터의 임의의 이름입니다. 아직 알 수없는 식별자가 표시됩니다. – Mzzz

+0

실제로, 나는 오래된 표현이 있다는 사실을 놓쳤습니다. 이 문제를 해결하기위한 답을 수정했습니다. –