Solidity

嵌套結構數組

  • March 1, 2022

我正在嘗試編寫一個簡單的選舉契約,目前正在嘗試將候選人添加到我的 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

讓我知道這是否有幫助。

引用自:https://ethereum.stackexchange.com/questions/122456