블록체인 학습
0 XP

실습: 후보자 등록 기능 구현

설계를 마쳤으니 코드로 옮길 차례입니다. 전체 투표 시스템을 한 번에 만들면 어디서 틀렸는지 찾기 어려우므로 가장 기초가 되는 기능부터 하나씩 쌓아 올립니다. 그 첫 번째가 후보자 등록 입니다. 후보자가 있어야 투표할 대상이 생기고 득표 수를 셀 자리도 마련됩니다.

앞 강의에서 설계한 Candidate 구조체와 candidates 배열을 실제로 선언하고, 거기에 새 후보자를 추가하는 함수를 작성합니다. 새 후보자는 등록 시점에 아직 표가 없으므로 득표 수를 0 으로 시작합니다. 함수 매개변수의 string 은 참조 타입이라 데이터 위치를 명시해야 하므로 string memory name 으로 받습니다.

배열에 구조체 추가하기

동적 배열의 끝에 새 요소를 붙일 때는 .push() 를 씁니다. 구조체 인스턴스는 필드 순서대로 값을 넘겨 Candidate(name, 0) 처럼 만들 수 있습니다. 이렇게 하면 name 은 입력받은 이름, voteCount 는 0 인 후보자 하나가 배열 끝에 추가됩니다. 넘기는 값의 순서는 구조체에 선언한 순서(name → voteCount)와 같아야 합니다.

candidates.push(Candidate(name, 0));

해야 할 일:

  1. Voting 컨트랙트 안에 Candidate 구조체를 선언하세요. 필드는 string name 과 uint256 voteCount 입니다.
  2. Candidate[] public candidates 동적 배열을 선언하세요.
  3. addCandidate(string memory name) 함수를 만들어, 득표 수 0 인 새 후보자를 candidates 에 추가하세요.

지금은 누구나 후보자를 등록할 수 있습니다. "소유자만 등록 가능" 같은 접근 제어는 뒤쪽 리팩터링 강의에서 추가합니다.

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

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

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