arrays - 如何使用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.User 存储引用的隐式转换无效。users.push(_name); ^---^
TypeError:函数调用中的参数类型无效。请求的从 uint256 到 struct MyContract.User 存储引用的隐式转换无效。users.push(_age); ^--^
先感谢您。
解决方案
你需要推动整个结构。在您的代码中,您分别一一推送..
正确的代码是..
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);
}
}
推荐阅读
- typescript - 关于在 TypeScript 中键入装饰器的问题
- php - PHP 电子邮件();我没有收到转发的电子邮件
- react-native - 选项卡导航器添加标题
- python - 如何在docker容器内的python中删除文件?
- vba - 阶乘函数返回平方数而不是阶乘
- c# - 正则表达式在 C# 中拆分 OSX df -h 输出
- angular - Apache Echarts:labels,splitLine 在极坐标图的半径轴上消失
- android - java.lang.RuntimeException:无法创建应用程序 com.app.MyApp:java.lang.NullPointerException:FirebaseCrashlytics 组件不存在
- azure - 在 Databrick API 2.0 中创建范围 - INVALID_PARAMETER_VALUE
- google-chrome-extension - 有没有办法通过桌面应用程序与画布进行交互?