Ethereum 警告:函数状态的可变性可以限制为纯函数

Ethereum 警告:函数状态的可变性可以限制为纯函数,ethereum,solidity,Ethereum,Solidity,我不熟悉solidity,我一直在尝试使用solidity中的函数打印简单的消息,但我未能成功部署,并且出现了一个错误,我无法找出问题所在 这就是我迄今为止所尝试的: pragma solidity ^0.6.0; contract test { string public _feedback; function reply(string memory feedback) public {

我不熟悉solidity,我一直在尝试使用solidity中的函数打印简单的消息,但我未能成功部署,并且出现了一个错误,我无法找出问题所在

这就是我迄今为止所尝试的:

 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
,您可以立即在函数中为其分配硬编码值“很好!”。从未使用作为参数提供的字符串。此外,如果希望函数返回某些内容(例如,
反馈
),则需要指定
函数回复(字符串内存反馈)公共返回(字符串反馈)