在部署合同时,Ethereum Remix会忽略某些功能参数吗?

时间:2018-02-02 22:02:44

标签: ethereum solidity smartcontracts ether remix

我使用remix制定了合同。复制合同并编写mocha测试后,我在运行部署测试时收到以下错误:

  

错误:" undefined"的参数数量无效

     

1)"在每个"之前挂钩"部署合同":         错误:" undefined"的参数数量无效。得到0预期1!

构造函数以前使用了参数& 我意识到我错误地将变量类型地址作为测试(合同)构造函数的参数,我在测试中没有提供。删除参数(在构造函数中未使用)后,测试通过。

function Test(address) public {...

它按照我的预期在remix(没有错误/警告)中工作,所以在将代码复制到编辑器之前我没有抓住它。

remix在部署合同时是否会忽略错误的参数?有没有办法在混音中捕捉到它?

1 个答案:

答案 0 :(得分:2)

  

remix在部署合同时会忽略未使用的参数吗?

嗯,实际上,当你遗留参数时,它会给你一个警告:

warning

  

警告:未使用的功能参数。删除或注释掉变量名称以使此警告静音。 function demo(address _unused)public pure returns(uint8){

但似乎如果你只提供没有名字的变量类型,那么remix就会忽略它:

no warning

  

有没有办法在混音中捕捉到它?

如果无名变量的值存储在堆栈中,可能会在assembly中捕获这样的东西,但这很深入探讨了如何编译Solidity代码并且可能不适合于测试