Folgender Code funktioniert, d.h. ich kann aufrufen add(2,3)
und gibt dann get(2,0)
3 zurück:
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;
}
}
Dieser Code funktioniert nicht, das heißt, ich rufe add(0xB139e6071772FAdC0e1Ad79C63415a2866fD447F,3)
auf und gibt dann get(0xB139e6071772FAdC0e1Ad79C63415a2866fD447F,0)
zurück 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;
}
}
Der einzige Unterschied besteht darin, dass der uint-Typ an einigen Stellen mit dem Adresstyp vertauscht wurde.
musste die Adresse in doppelte Anführungszeichen setzen, wenn remix verwendet wurde, wie smarx sagte
Benutzer19510
Benutzer19510