固定性-无效的BigNumber字符串(参数=&Q;值&Q;值=&Q;&Q;代码=INVALID_ARGUMENT VERSION=BigNumber/5.4.2) [英] Solidity - Invalid BigNumber string (argument="value" value="" code=INVALID_ARGUMENT version=bignumber/5.4.2)
本文介绍了固定性-无效的BigNumber字符串(参数=&Q;值&Q;值=&Q;&Q;代码=INVALID_ARGUMENT VERSION=BigNumber/5.4.2)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这里是可靠的新手。当我尝试读取People数组的值时。我收到一个错误:
对SimpleStorage.People的调用出错:编码参数时出错:错误: 无效的大数字字符串(参数=&Q;值&Q;值=&Q;&Q; CODE=INVALID_ARGUMENT VERSION=Bignumber/5.4.2)
我的编译器版本是0.6.6。不确定出了什么问题?有什么建议吗?
// SPD-License_Identifier: MIT
pragma solidity ^0.6.0;
contract SimpleStorage {
uint256 favNum;
struct People {
uint256 favNum;
string name;
}
People[] public people;
function store(uint256 _favNum) public {
favNum = _favNum;
}
function retrieve() public view returns(uint256) {
return favNum;
}
function addPerson(string memory _name, uint256 _favNum) public {
people.push(People(_favNum, _name));
}
}
推荐答案
尝试在不传递任何值的情况下调用people()
函数(从Remix IDE)时发生错误。
由于People[] public people
是公共属性,因此它autogenerates是编译期间的getter函数。但是因为它是一个数组,所以getter函数需要一个uint256
参数来指定要检索的数组的索引。
当您传递空字符串时,Remix会尝试将其编码到BigNumber
实例中,但失败了。只有当您传递数组的(现有)索引时,它才能正常工作:
如果您希望在一次调用中获取整个数组,则需要创建一个单独的getter函数:
function getAllPeople() public view returns (People[] memory) {
return people;
}
这篇关于固定性-无效的BigNumber字符串(参数=&Q;值&Q;值=&Q;&Q;代码=INVALID_ARGUMENT VERSION=BigNumber/5.4.2)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文