블록체인 학습
0 XP

종합 실습: 할 일 목록 컨트랙트

이번 종합 실습은 지금까지 배운 조각들을 한데 모읍니다. struct 선언, struct 배열, push 로 추가, 그리고 무엇보다 storage 참조로 기존 요소 수정까지 이어집니다. 주제는 누구나 떠올리기 쉬운 할 일(To-Do) 목록입니다. 할 일은 "내용"과 "완료 여부"라는 두 상태를 가지고, 시간이 지나면서 완료로 바뀐다는 점이 이번 실습의 포인트입니다.

배열에 이미 들어 있는 Task 의 done 값을 바꾸려면, 그 요소를 원본째로 가리켜야 합니다. Task memory t = tasks[_index]; 처럼 memory 로 받으면 복사본만 바뀌고 배열 원본은 그대로입니다. 반대로 Task storage t = tasks[_index]; 로 받으면 t.done = true; 가 블록체인의 실제 데이터를 변경합니다.

해야 할 일:

  1. TodoList 컨트랙트 안에 Task struct 를 선언하세요.
    • string content (할 일 내용)
    • bool done (완료 여부)
  2. Task 타입의 public 동적 배열 tasks 를 선언하세요.
  3. addTask(string memory _content) 함수로 done 이 false 인 새 Task 를 추가하세요.
  4. completeTask(uint256 _index) 함수로 해당 인덱스 task 의 done 을 true 로 바꾸세요. (storage 참조를 사용하세요)
  5. taskCount() 함수로 task 개수를 반환하세요. (returns (uint256))

배열 요소를 직접 수정하려면 Task storage t = tasks[_index]; 처럼 storage 참조를 받아 t.done = true; 로 변경합니다.

완성 후 Run 을 눌러 모든 조건을 통과하는지 확인하세요.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.