我在用:
pragma solidity ^0.5.0;在我的合同中,我的职能如下:
function test(string a) external{
a="apple";
}出现了一个错误,说明我需要在参数中添加"calldata“。因此,如果我执行以下操作,错误将消失:
function test(string calldata a) external{
a="apple";
}问:当我使用字符串类型作为参数时,为什么需要添加"calldata“?
发布于 2019-01-10 11:26:39
结构、数组或映射类型的所有变量的显式数据位置现在都是必需的。这也适用于函数参数和返回变量。例如,将uint[] x = m_x更改为uint[] storage x = m_x,函数f(uint[][] x)改为Functionalf(uint[][] memory x),其中memory是数据位置,并可能相应地被storage或calldata替换。注意,外部函数需要数据位置为calldata的参数。关于更多的信息
https://ethereum.stackexchange.com/questions/65329
复制相似问题