Solidity
呼叫函式時如何返回結構?
我想返回 struct type
User
。但是,當我嘗試以下getUser
函式時,它返回錯誤。有什麼方法可以從函式返回結構數據?契約
struct User{ uint256 user_id; bytes32 name; bytes32 address; bytes32 birth_day; } mapping (uint256 => User) public users; function getUser(uint256 user_id) constant returns (User) { return users[user_id]; }
錯誤
client/lib/contracts/User.sol:Solidity 錯誤::125:58:錯誤:預期類型名稱
函式 getUser(uint256 user_id)常量返回(struct User){
您不能返回 a
struct
因為 Solidity 僅將它們實現為一個鬆散的變數包,它們不是真實的對象。您可以使用此答案中的解決方案:https ://ethereum.stackexchange.com/a/3614/264
更新
因為
0.4.17
您可以使用pragma experimental ABIEncoderV2
返回結構。當然,在experimental
刪除關鍵字之前,在生產應用程序中使用它是不安全的。
傳遞結構在 0.4.17 中可用,帶有pragma experimental ABIEncoderV2。見https://github.com/ethereum/solidity/issues/40