Возвращение структур в новой версии в Solidity

Я читал о версии Solidity версии 0.4.17. https://github.com/ethereum/solidity/releases

Было действительно интересно одно из следующих утверждений:

  

Мы также работали над новым кодером ABI: теперь функции   return structs. Включите его, используя pragma experimental ABIEncoderV2.   Он должен уже работать, но все же генерирует более дорогой код.

Я пытаюсь имитировать это в Remix, но без везения, я получаю эту ошибку:

  

"error": "Не удалось декодировать вывод: Ошибка: Неподдерживаемый или недопустимый тип:   кортеж»   Вот мой код:

pragma solidity ^0.4.17;
pragma experimental ABIEncoderV2;
contract StructTest{
    struct someTestStruct {
        uint A;
        uint B;
        bytes32 C;
    }
    someTestStruct str;
    function StructTest(){
        str = someTestStruct({A: 5, B: 6, C: "Hi"});
    }
    // trying to get struct but getting "error": "Failed to decode output: Error: Unsupported or invalid type: tuple"
    function returnStruct() returns (someTestStruct){
        return str;
    }
}

Попробовал ли кто-нибудь это? Что я здесь делаю неправильно? Спасибо заранее!

6 голосов | спросил Sivich 27 +03002017-10-27T16:10:37+03:00312017bEurope/MoscowFri, 27 Oct 2017 16:10:37 +0300 2017, 16:10:37

2 ответа


3

Да, мы можем вернуть структуры.

Но только во внутренних вызовах функций .

pragma solidity ^0.4.19;

contract tester{

struct Person
{
    string name;
    uint age;
}

function getSome() public returns (Person a)
{
    Person memory p;
    p.name = "kashish";
    p.age =20;
    return p;
}

function wantSome() public returns (string,uint)
{
     Person memory p2 =getSome();
     return (p2.name,p2.age); // return multiple values like this
}
}
ответил Kashish Khullar 27 WedEurope/Moscow2017-12-27T15:08:14+03:00Europe/Moscow12bEurope/MoscowWed, 27 Dec 2017 15:08:14 +0300 2017, 15:08:14
0

Можно проверить версию компилятора Solidity в меню «Настройки» Remix. В моем тесте код работает нормально. Так что это может быть компилятор не последним.

ответил Linmao Song 27 +03002017-10-27T18:26:34+03:00312017bEurope/MoscowFri, 27 Oct 2017 18:26:34 +0300 2017, 18:26:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132