首页 > 解决方案 > Solidity - 将随机数存储到动态数组并返回数组

问题描述

我使用混音 IDE。当我调用函数 get number 我得到这个 0: uint256[]:
如何更改它以返回动态数组的数字?

pragma 稳固性 ^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;
    }
}

标签: ethereumsoliditysmartcontracts

解决方案


该函数是 a view,因此它不能修改状态。调用randomnumber()将返回一个值,但不会更改numbers数组。

从 中删除view修饰符randomnumber(),它将向数组中添加一项。(提前返回将防止循环重复。)


推荐阅读