Сопоставление не работает с типом адреса

Работает следующий код, то есть я могу позвонить, 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 был заменен на тип адреса в паре мест.

Этот точный код отлично работает для меня в Remix. Если у вас по-прежнему возникают проблемы, опишите, как вы развертываете контракт и как вы вызываете функции. (Поделитесь кодом, если вы вызываете функции из кода.)
Если вы используете Remix, не забудьте заключить адрес в двойные кавычки.

Ответы (1)

должен был заключать адрес в двойные кавычки при использовании ремикса, как сказал smarx