Ant*_*ell 3 solidity smartcontracts
我想知道是否可以在 Solidity 中映射函数,例如:
mapping (uint256=> function) function_map;
f(){
do something;
}
function_map[1] = f;
Run Code Online (Sandbox Code Playgroud)
虽然您无法将函数存储为类型,但您可以存储表示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]);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |