如何为 Solidity 中的函数设置默认参数

Mah*_*h B 4 solidity

我在下面的示例中遇到了Solidity Documentation并且在我的项目中有类似的代码,default value如果键不是从调用者传递的,我想设置为键参数

pragma solidity ^0.4.0;

contract C {
    function f(uint key, uint value) public {
        // ...
    }

    function g() public {
        // named arguments
        f({value: 2, key: 3});
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是——

  • Solidity 语言提供了default parameters吗?
  • 如果不允许使用默认参数,如何实现相同的目标?

感谢帮助?

Ada*_*nis 10

Solidity 不支持默认参数,但它在他们的路线图上(参见https://github.com/ethereum/solidity/issues/232)。要解决此问题,只需使用函数重载:

pragma solidity ^0.4.0;

contract C {
    function f(uint key, uint value) public {
        // ...
    }

    function h(uint value) public {
        f(123, value);
    }

    function g() public {
        // named arguments
        f({value: 2, key: 3});
    }

    function i() public {
        h({value: 2});
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 似乎值得指出的是,Solidity 允许具有相同名称的函数,如果它们具有不同的参数类型。所以它们都可以称为`f(...)`。 (3认同)