Работает следующий код, то есть я могу позвонить, add(2,3)
а потом get(2,0)
вернуть 3:
pragma solidity ^0.4.10;
contract Bar {
struct Foo{
uint x;
}
mapping(uint => Foo[]) foo;
function add(uint id, uint _x) public {
foo[id].push(Foo(_x));
}
function get(uint id, uint index) view public returns(uint){
return foo[id][index].x;
}
}
Этот код не работает, то есть я вызываю add(0xB139e6071772FAdC0e1Ad79C63415a2866fD447F,3)
, а потом get(0xB139e6071772FAdC0e1Ad79C63415a2866fD447F,0)
возвращает 0
:
pragma solidity ^0.4.10;
contract Bar {
struct Foo{
uint x;
}
mapping(address => Foo[]) foo;
function add(address id, uint _x) public {
foo[id].push(Foo(_x));
}
function get(address id, uint index) view public returns(uint){
return foo[id][index].x;
}
}
Единственная разница в том, что тип uint был заменен на тип адреса в паре мест.
должен был заключать адрес в двойные кавычки при использовании ремикса, как сказал smarx
пользователь19510
пользователь19510