我想知道是否可以在地图中稳定地映射函数,例如:
body {
margin: 0px;
}
答案 0 :(得分:1)
答案 1 :(得分:1)
虽然您无法将该功能存储为类型,但您可以存储bytes4
表示,然后通过call()
调用。
pragma solidity ^0.4.20;
contract Test {
uint public _val;
mapping(uint => bytes4) _methodToInvoke;
function Test() public {
_methodToInvoke[1] = bytes4(keccak256("incrementBy1()"));
_methodToInvoke[2] = bytes4(keccak256("incrementBy2()"));
}
function incrementBy1() public {
_val++;
}
function incrementBy2() public {
_val += 2;
}
function invoke(uint idx) public returns (bool) {
return this.call(_methodToInvoke[idx]);
}
}