如何修复 Solidity 中的错误“此声明隐藏现有声明”?

Ann*_*nna 6 solidity

我正在编写一些代码来设计智能合约。但每次我说“警告:此声明隐藏了现有声明”时,我都会不断收到相同的错误。由于我是 Solidity 语言的新手,所以我还没有找到可能的解决方案:

contract Diamondtracability {

uint private diamondIDengravement;
uint private diamondIDdatabase;
uint public buyerID;

   //uint private diamondIDengravement = diamondIDdatabase;
   //string[] public diamondDirectory;

constructor() public {
    diamondIDengravement = 1;
    diamondIDdatabase = 1;
    buyerID = 1;
}

function set(uint diamondIDengravement) public {
    diamondIDengravement = _diamondIDdatabase
}

function get(uint) interface returns public {
    return diamondIDengravement;return diamondIDdatabase;return buyerID
}
Run Code Online (Sandbox Code Playgroud)

}

下面所述的功能应该可以工作,但我自己找不到解决方案:

function set(uint diamondIDengravement) public {
diamondIDengravement = _diamondIDdatabase
}
Run Code Online (Sandbox Code Playgroud)

use*_*559 9

这不是一个错误。这是一个警告。

但你可能想要这样的东西:

function set(uint _diamondIDengravement) public {
    diamondIDengravement = _diamondIDengravement;
}
Run Code Online (Sandbox Code Playgroud)

基本上,您已经有一个名为 的状态变量diamondIDengravement,因此用相同的名称命名函数参数是一个坏主意。您可以为参数使用任何其他名称,但按照惯例,如果您只是想避免名称冲突,则在前面添加下划线是表明您正在执行的操作的好方法。

但你的代码没有什么意义,所以很难说出你想做什么。(我不确定你想做什么set,所以我猜测一下。)