Solidity - 将随机数存储到动态数组和 return 数组
Solidity - Store random numbers to a dynamic array and return the array
我使用混音 IDE。当我调用函数 get number 时,我得到了这个 0: uint256[]:
如何将其更改为 return 动态数组的数字?
pragma solidity ^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;
}
}
该函数是一个 view
,因此它不能修改状态。调用 randomnumber()
将 return 一个值,但不会更改 numbers
数组。
从 randomnumber()
中删除 view
修饰符,它会向数组添加一项。 (早期的 return 将防止循环重复。)
试试这个
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;
}
}
我使用混音 IDE。当我调用函数 get number 时,我得到了这个 0: uint256[]:
如何将其更改为 return 动态数组的数字?
pragma solidity ^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;
}
}
该函数是一个 view
,因此它不能修改状态。调用 randomnumber()
将 return 一个值,但不会更改 numbers
数组。
从 randomnumber()
中删除 view
修饰符,它会向数组添加一项。 (早期的 return 将防止循环重复。)
试试这个
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;
}
}