Contract-Design
下面的程式碼被編譯但是當呼叫 foo 時拋出無效的操作碼錯誤
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()
.