Как инициализировать пустой массив и вставлять в него элементы?

Вот моя функция:

function Test() constant returns (uint[]) {
   var myArray = uint[];
   myArray.push(123); 
   return myArray;
}

Вот ошибка, которую я получаю в онлайн-компиляторе целостности :

  

ballot.sol: 25: 9: Ошибка: член «push» не найден или не отображается после зависимого от аргумента поиска в типе (uint256 [] memory)           myArray.push (123);

16 голосов | спросил manidos 20 Jam1000000amFri, 20 Jan 2017 10:15:28 +030017 2017, 10:15:28

1 ответ


28

Вам нужно использовать массив в хранилище , потому что невозможно изменить размеры массивов памяти .

contract D { 
    uint[] myArray;
    function Test() constant returns (uint[]) {
       myArray.push(123); 
       return myArray;
    }
}

В противном случае вам нужно определить размер массива во время инициализации:

contract C {
    function f(uint len) {
        uint[] memory a = new uint[](7);
        bytes memory b = new bytes(len);
        // Here we have a.length == 7 and b.length == len
        a[6] = 8;
    }
}
ответил eth 20 Jam1000000amFri, 20 Jan 2017 11:45:03 +030017 2017, 11:45:03

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

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

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