如何使用solidity在remix IDE中的数组中插入用户输入数据



我是学习solidity语言的初学者。如何用solidity语言在数组中插入用户输入数据。以下是我迄今为止编码的带有一些错误的代码。

pragma solidity ^0.4.19;
contract SampleContract{
struct User{
string name;
uint age;
}
User[] users;
uint i=0;
constructor(uint _arrayLength)public{
users.length = _arrayLength;
}
function addUsers(string _name, uint _age) public {
uint i = 0;
for(i = 0; i < users.length; i++) {
users.push(_name);
users.push(_age);
}
}
function getUser() public view returns (User[]) {
return users;
}
}

我得到以下错误;

TypeError:函数调用中参数的类型无效。从字符串内存到结构MyContract的隐式转换无效。请求了用户存储引用。users.push(_name(;^---^

TypeError:函数调用中参数的类型无效。从uint256到结构MyContract的隐式转换无效。请求了用户存储引用。users.push(_age(;^--^

提前谢谢。

您需要推送整个Struct。在您的代码中,您正在逐个单独推送。。

正确的代码是..

pragma solidity ^0.4.19;
contract SampleContract{


struct User{
string name;
uint age;
}
User[] public users;

//uint i=0;
constructor(uint _arrayLength) public{
users.length = _arrayLength;
}
function addUsers(string _name, uint _age) public {

users.push(User(_name,_age))-1;
}
function getUser(uint i) public view returns (string, uint) {
return (users[i].name, users[i].age);
}
}

最新更新