问题描述
我是学习扎实语言的初学者。如何以统一语言将用户输入数据插入数组中。以下是我到目前为止编码的代码,但有一些错误。
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);
}
}