Solidity
嵌套結構數組
我正在嘗試編寫一個簡單的選舉契約,目前正在嘗試將候選人添加到我的 Election 結構中的候選人數組中。
可以做到這一點,如果可以,如何實施?添加單個候選對象而不使其成為數組時,該程式碼可以正常工作。
struct Candidate { uint256 candidateID; uint256 voteCount; string name; } struct Elections { uint256 elecID; Candidate[] candidates; }
mapping(uint256 => Candidate) public candidates; mapping(uint256 => Elections) public elections;
function createElection(string[] memory _names) public { electionCount++; elections[electionCount].candidates[0] = Candidate(0, 0, _names[0]); elections[electionCount].candidates[1] = Candidate(1, 0, _names[1]); //elections[electionCount] = Election(electionCount, _candidates); }
是的,您可以將一組候選人添加到選舉結構中。
Elections storage newElection = elections[electionCount]; newElection.candidates.push(); Candidate storage newCandidate = elections[electionCount].candidates[0]; newCandidate.candidateID = 0; newCandidate.voteCount = 0; newCandidate.name = "candidate name";
你可以嘗試這樣的事情。動態數組只能在儲存中訪問,不能在記憶體中訪問,這是需要牢記的。
另外,您可能想看看這個項目:https ://github.com/hjk216/CityVotingSC
讓我知道這是否有幫助。