실습: 투표 결과 조회 함수
투표를 받을 수 있게 되었으니, 이제 결과를 읽는 기능이 필요합니다. 누가 몇 표를 받았는지,
후보자가 모두 몇 명인지 외부에서 확인할 수 있어야 투표 시스템이 제 역할을 합니다.
결과 조회는 상태를 바꾸지 않고 값만 읽는 동작이라 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 입니다.
해야 할 일:
- 앞 강의의
Candidate구조체,candidates배열,hasVoted,notVotedYetmodifier,addCandidate,vote를 유지하세요. getVoteCount(uint256 index)함수를 추가하세요.- 이 함수는
view이며uint256을 반환하고,candidates[index].voteCount를 돌려주어야 합니다. - 전체 후보자 수를 알려주는
getCandidateCount()함수도 추가하세요 (view,uint256반환,candidates.length반환).
완성 후 Run 으로 조건을 확인하세요.