Contract-Design

下面的程式碼被編譯但是當呼叫 foo 時拋出無效的操作碼錯誤

  • July 29, 2020
pragma solidity >=0.5.0 <0.7.0;
contract Mycontract{
   uint256 a;
   struct User
   {  string name; }
   User[] users;
   function foo() public{
     User storage user=users[0];
     user.name="hey";
   }
   function get() public view returns(string memory)
   {   return users[0].name; }
}

它是由這個引起的:User storage user=users[0];

您嘗試分配給數組user的第一個元素,users但無法訪問空數組。

如果要將對象推送到數組中,可以使用array.push().

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