블록체인 학습
0 XP

실습: 투표 결과 조회 함수

투표를 받을 수 있게 되었으니, 이제 결과를 읽는 기능이 필요합니다. 누가 몇 표를 받았는지, 후보자가 모두 몇 명인지 외부에서 확인할 수 있어야 투표 시스템이 제 역할을 합니다. 결과 조회는 상태를 바꾸지 않고 값만 읽는 동작이라 view 로 선언합니다. 외부에서 직접 읽을 때는 가스가 들지 않지만, 다른 상태 변경 함수 안에서 호출하면 그 트랜잭션의 가스에 포함됩니다.

view 함수로 득표 수 읽기

getVoteCount 는 후보자 인덱스를 받아 그 후보자의 voteCount 를 반환합니다. 반환 타입이 uint256 이므로 함수 시그니처에 returns (uint256) 을 명시하고, view 키워드로 상태를 읽기만 한다고 표시합니다.

function getVoteCount(uint256 index) public view returns (uint256) {
    return candidates[index].voteCount;
}

배열의 길이로 후보자 수 세기

매핑은 길이를 셀 수 없지만, 동적 배열은 .length 로 요소 개수를 즉시 알 수 있습니다. 후보자 목록을 배열로 둔 또 하나의 이유가 여기에 있습니다. getCandidateCount 는 candidates.length 를 반환해 전체 후보자 수를 알려줍니다. 이 함수도 값만 읽으므로 view 입니다.

해야 할 일:

  1. 앞 강의의 Candidate 구조체, candidates 배열, hasVoted, notVotedYet modifier, addCandidate, vote 를 유지하세요.
  2. getVoteCount(uint256 index) 함수를 추가하세요.
  3. 이 함수는 view 이며 uint256 을 반환하고, candidates[index].voteCount 를 돌려주어야 합니다.
  4. 전체 후보자 수를 알려주는 getCandidateCount() 함수도 추가하세요 (view, uint256 반환, candidates.length 반환).

완성 후 Run 으로 조건을 확인하세요.

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

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