Ethereum Remix 在部署合约时会忽略某些函数参数吗?

Does Ethereum Remix ignore certain function parameters when deploying a contract?

我有一个使用 remix 开发的合同。复制合约并编写 mocha 测试后,我在 运行 部署测试时收到以下错误:

Error: Invalid number of parameters for "undefined"

1) "before each" hook for "deploys a contract": Error: Invalid number of parameters for "undefined". Got 0 expected 1!

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

function Test(address) public {...

它在混音中工作(没有 errors/warnings),正如我预期的那样,所以我在将代码复制到编辑器之前没有捕捉到它。

remix 在部署合约时会忽略错误参数吗?有没有办法在混音中捕捉到这个?

Does remix ignore unused parameters when it deploys a contract?

好吧,实际上当你没有使用参数时它会给你一个警告:

Warning: Unused function parameter. Remove or comment out the variable name to silence this warning. function demo(address _unused) public pure returns (uint8) {

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


Is there a way to catch this in remix?

如果无名变量的值存储在堆栈中,则可能会在 assembly 中捕获此类内容,但这是对 Solidity 代码的编译方式的深入研究,可能不符合目的只是测试。