Солидность - хранить случайные числа в динамическом массиве и возвращать массив - PullRequest
0 голосов
/ 19 ноября 2018

Я использую ремикс IDE.Когда я вызываю функцию get number, я получаю это 0: uint256 []:
Как я могу изменить его так, чтобы он возвращал номера динамического массива?

Прагма Solidness ^ 0.4.24;

contract dynamicarray { 

    uint public constant MaxNumber = 50;

    uint[] numbers;

    function randomnumber() public view returns (uint){
        uint random = uint(sha3(block.timestamp)) % MaxNumber +1;
        for(uint i = MaxNumber; i > numbers.length; i++){
            numbers.push(random);  
            return  random;
        }
    }

    function getnumbers() public view returns(uint[]){
        return  numbers;
    }
}

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Попробуйте это

pragma solidity ^0.4.24;

contract dynamicarray { 

    uint public constant MaxNumber = 50;

    uint[] numbers;

    function randomnumber() public returns (uint){
        uint random = uint(keccak256(block.timestamp)) % MaxNumber +1;
        for(uint i = MaxNumber; i > numbers.length; i++){
            numbers.push(random);  
            return  random;
        }
    }

    function getnumbers() public view returns(uint[]){
        return  numbers;
    }
}
0 голосов
/ 20 ноября 2018

Функция view, поэтому она не может изменять состояние. Вызов randomnumber() вернет значение, но не изменит массив numbers.

Удалите модификатор view из randomnumber(), и он добавит один элемент в массив. (Ранний возврат предотвратит повторение цикла.)

...