首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当函数有字符串参数时,需要什么Calldata标记?

当函数有字符串参数时,需要什么Calldata标记?
EN

Ethereum用户
提问于 2019-01-10 11:23:23
回答 1查看 1.4K关注 0票数 0

我在用:

代码语言:javascript
复制
 pragma solidity ^0.5.0;

在我的合同中,我的职能如下:

代码语言:javascript
复制
function test(string a) external{
  a="apple";
}

出现了一个错误,说明我需要在参数中添加"calldata“。因此,如果我执行以下操作,错误将消失:

代码语言:javascript
复制
function test(string calldata a) external{
  a="apple";
}

问:当我使用字符串类型作为参数时,为什么需要添加"calldata“?

EN

回答 1

Ethereum用户

发布于 2019-01-10 11:26:39

结构、数组或映射类型的所有变量的显式数据位置现在都是必需的。这也适用于函数参数和返回变量。例如,将uint[] x = m_x更改为uint[] storage x = m_x,函数f(uint[][] x)改为Functionalf(uint[][] memory x),其中memory是数据位置,并可能相应地被storagecalldata替换。注意,外部函数需要数据位置为calldata的参数。关于更多的信息

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/65329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档