Addresses
Solidity插入將地址映射到bytes32數組的數據錯誤
我的契約如下:
pragma solidity ^0.4.21; contract try { mapping (address=>bytes32[10]) Map; function try(){} function fill_map(bytes32[10] _attributes) public { Map[msg.sender].push(_attributes); } function get_map(address id) view public returns (bytes32[10]){ return Map[id]; } }
我得到的錯誤是:
Member “push” not found or not visible after argument-dependent lookup in bytes32[10] storage reference Map[msg.sender].push(_attributes)
我還嘗試使用循環插入數據,如下所示:
for(uint i=0;i<10;i++) { Map[msg.sender].push(_attributes[i]); }
也會導致同樣的錯誤。
您必須直接分配數據
function fill_map(bytes32[10] _attributes) public { Map[msg.sender] = _attributes; }
同樣
try
是保留關鍵字,編譯將失敗。您必須為您的契約使用另一個名稱。
在映射 (key => value) Map中插入數據的語法是
Map[key] = value
在你的情況下
Map[msg.sender] = _attributes
push()
函式將數據插入數組但不插入映射。