Box와 재귀 자료구조 · 코딩 클래스
선택한 언어나 버전에는 이 주제가 없어 같은 영역의 시작 페이지를 표시합니다.
학습 장의 개념을 직접 사용합니다. 문제는 확인하기 → 프로그램 만들기 → 오류 해결하기 순서입니다. 먼저 구현한 뒤 힌트를 읽고 완료 기준으로 확인하세요. 각 문제는 별도 파일이나 작업 디렉터리에서 진행하세요.
1. 확인하기 · 연결의 끝 표현
섹션 제목: “1. 확인하기 · 연결의 끝 표현”학습 장의 prepend로 5, 10, 20을 순서대로 연결해 합계 35를 만드세요. 빈 리스트의 합계도 실행하세요.
완료 기준: 합계는 35와 0입니다. 각 노드의 next와 마지막 None을 그림이나 메모로 표시합니다.
힌트: 20을 먼저 만들고 10, 5를 앞에 붙입니다.
2. 프로그램 만들기 · 노드를 소비하는 개수 함수
섹션 제목: “2. 프로그램 만들기 · 노드를 소비하는 개수 함수”sum과 같은 소유권 전달 방식으로 리스트 길이를 세는 length를 작성하세요. 빈 리스트와 세 노드 리스트를 각각 새로 만들어 전달하세요.
완료 기준: 결과는 0과 3입니다. sum에 넘긴 리스트를 length에 다시 넘기지 않습니다.
힌트: Some이면 1에 다음 노드의 개수를 더하고 None이면 0입니다.
3. 오류 해결하기 · 이동한 소유자 재사용 수정
섹션 제목: “3. 오류 해결하기 · 이동한 소유자 재사용 수정”아래 코드는 상자 이름을 바꾼 뒤 이전 이름으로 소비합니다. 새 Box를 복제하지 않고 올바른 소유자를 사용하도록 수정하세요.
의도적인 오류가 있는 시작 코드입니다.
fn main() { let original = box(42); let transferred = original; println(original.into_inner());}xen check class_move.xen진단에 포함되는 내용:
value moved here완료 기준: 42가 한 번 출력됩니다. 소유권이 이동한 대입 위치를 설명합니다.
힌트: 새 소유자는 transferred입니다. into_inner도 상자를 소비합니다.
검증하고 기록하기
섹션 제목: “검증하고 기록하기”정상 프로그램은 xen check 파일.xen 후 xen run 파일.xen으로 확인하세요. 테스트 전용 파일은 xen test 파일.xen을 사용합니다. 수정 전 오류·원인·수정 후 결과를 짧게 기록하고, 완료 기준의 모든 입력을 다시 실행하세요.