ethereum - 编译器不允许我实例化结构
问题描述
通常在声明函数时会出现此错误,并通过在参数旁边添加“内存”而消失,但这次我无法解决它。我正在尝试实例化一个接受两个参数的结构:
struct Obj {
string where;
uint what;
}
function do() public {
Obj obj=Obj("here",1);
}
带有新 Obj 触发器的行:TypeError: Data location must be "storage", "memory" or "calldata" for variable, but none was given.
我试着把“内存”放在所有地方,在第一个参数之后,第二个之后,两个之后,函数之后等等。似乎没有什么可以安抚编译器。
我在用着pragma solidity ^0.8.0;
解决方案
首先您需要定义数据类型 ( Obj
),然后是位置 (memory
或storage
),然后是变量名 ( obj
)。
function foo() public {
Obj memory obj = Obj("here", 1);
}
推荐阅读
- python - 当用户在python中更改个人资料图像时,如何从文件夹中删除以前上传的图像?
- angular - 在 Angular 中验证 startDate endDate
- r - 按年份在 R 中绘制时间序列数据
- android - 如何使用 kotlin 从 firestore 读取数组数据?
- django - Django按多个字段排序
- reactjs - 为什么在使用带有道具的 TexInput 组件时我不能连续输入文本
- r-exams - 考试 R 包中的真假问题
- c# - 评估 ac# 字符串是单个 Emoji 还是 Emoji ZWJ 序列?
- r - 如何删除数据框中具有重复值的列?
- react-native - React Native 中的 PanResponder 和动画问题