Ethereum 警告:函数状态的可变性可以限制为纯函数
我不熟悉solidity,我一直在尝试使用solidity中的函数打印简单的消息,但我未能成功部署,并且出现了一个错误,我无法找出问题所在 这就是我迄今为止所尝试的:Ethereum 警告:函数状态的可变性可以限制为纯函数,ethereum,solidity,Ethereum,Solidity,我不熟悉solidity,我一直在尝试使用solidity中的函数打印简单的消息,但我未能成功部署,并且出现了一个错误,我无法找出问题所在 这就是我迄今为止所尝试的: pragma solidity ^0.6.0; contract test { string public _feedback; function reply(string memory feedback) public {
pragma solidity ^0.6.0;
contract test {
string public _feedback;
function reply(string memory feedback) public
{
feedback = "Well done!";
}
}
我收到的错误是“警告:函数状态的易变性可以限制为纯函数”编译器只是警告函数执行的结果reply是固定的,“规范地”这可以通过添加纯说明符来表示:
function reply(string memory feedback) public pure
{
feedback = "Well done!";
}
但即使没有这一变更,合同也将被正确地编译和创建。只有在它当前的形式下,您将无法以任何方式理解它的工作原理:-)您确定这就是阻止您成功部署的原因吗?这是警告,不是错误。这只是建议您将函数标记为纯函数。啊,我的错误,我可以部署它,但输出不是预期的,预期的输出是:回复|做得好!但现在的输出是:reply | string(字符串)feedback这里有几个问题。这里有两个字符串变量:一个在存储器中称为
\u feedback
,您既不读也不写;另一个在存储器中称为feedback
,您可以立即在函数中为其分配硬编码值“很好!”。从未使用作为参数提供的字符串。此外,如果希望函数返回某些内容(例如,反馈
),则需要指定函数回复(字符串内存反馈)公共返回(字符串反馈)你能告诉我们你希望这份合同如何运作吗?