Ethereum 实度函数重载行为

Ethereum 实度函数重载行为,ethereum,solidity,contract,Ethereum,Solidity,Contract,我的合同是这样的,问题是为什么foo(uint256 n)不起作用(没有价值回报)。如果合同只有foo(uint256 n),它就可以工作 contract OverloadContract { // working function foo(uint256 n, uint256 m) public pure returns (uint256) { return n + m; } // not working ? function foo(uint256 n) public pure

我的合同是这样的,问题是为什么
foo(uint256 n)
不起作用(没有价值回报)。如果合同只有
foo(uint256 n)
,它就可以工作

contract OverloadContract {
// working
function foo(uint256 n, uint256 m) public pure returns (uint256) {
    return n + m;
}

// not working ?
function foo(uint256 n) public pure returns (uint256) {
    return n;
}

// working
function foo() public pure returns (uint256) {
    return 1;
}

// working
function foo(uint256 i, uint256 n, uint256 m) public pure returns (uint256) {
    return i + n + m;
}
}

该漏洞由以太坊/remix#864修复,并将随remix 0.7一起发布


链接:

您是否在混音中测试此功能?我可以在那里复制它,但是当我通过
eth_call
(JSON-RPC接口)直接调用函数时,函数工作正常。事实上,在Remix中,针对本地
ganache
实例进行测试,我可以在网络选项卡中看到正确的值,所以这看起来像是UI层中的一个bug。我建议提交一个问题:。是的,我在Remix ide中写的,谢谢@smarx,我将提交一个问题