【问题标题】:Does Ethereum Remix ignore certain function parameters when deploying a contract?Ethereum Remix 在部署合约时是否会忽略某些函数参数?
【发布时间】:2018-02-02 22:02:44
【问题描述】:

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

错误:“未定义”的参数数量无效

1) “部署合约”的“before each”钩子: 错误:“未定义”的参数数量无效。得到 0 预期 1!

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

function Test(address) public {...

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

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

【问题讨论】:

  • 标签请求:我注意到以太坊 Solidity IDE 没有“remix”标签。 Solidity 是一个有效的标签,但不存在 remix。专门的以太坊交换网站有这个标签,但它不应该在这里也可以用于编程相关的问题吗?对它的简单搜索表明有足够的问题值得提出。许多 IDE 和文本编辑器都有标签,但没有一个用于混音。我没有代表,否则我会自己创建。

标签: ethereum solidity smartcontracts ether remix


【解决方案1】:

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

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

警告:未使用的函数参数。删除或注释掉变量名称以消除此警告。 function demo(address _unused) public pure 返回 (uint8) {

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


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

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

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多