Solidity TypeError: Этот тип поддерживается только в новом экспериментальном кодере ABI - PullRequest
0 голосов
/ 14 сентября 2018

Я практикую свои навыки Solidity и, хотя я ожидал получить ошибку, я не ожидал этой ошибки

TypeError: Этот тип поддерживается только в новом экспериментальном ABI кодировщик. Используйте "Прагма экспериментальная ABIEncoderV2;" чтобы включить особенность. функция getArray () публичное представление возвращает (string []) {

Это мой код в Remix:

pragma solidity ^0.4.17;

contract Test {
    string[] public myArray;

    function Test() public {
        myArray.push("hola");
    }

    function getArray() public view returns (string[]) {
        return myArray;
    }
}

Что здесь дает?

Это потому, что стандартный ABI не поддерживает динамические вложенные массивы?

Я просто хочу подтвердить свое понимание ошибки. Это говорит мне, что произвольно вложенные массивы в аргументах функций и возвращаемых значениях не поддерживаются в моей текущей версии, но в новом экспериментальном кодере ABI, это то, что он говорит?

1 Ответ

0 голосов
/ 14 сентября 2018

Это из-за string[].

Да, это потому, что динамические вложенные массивы еще не поддерживаются, это все еще экспериментально.Вы можете включить эту функцию, добавив pragma experimental ABIEncoderV2; поверх исходного кода.

Пакет web3 только начал поддерживать его в последней версии web3 1.0.0-beta36 .Трюфель по-прежнему зависит от предыдущей версии web3, поэтому вам нужно немного подождать (около месяца), если вы хотите проверить свой контракт с помощью Truffle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...