solidity/test/libsolidity/semanticTests/functionTypes/function_type_library_internal.sol
2020-03-19 14:42:25 +01:00

27 lines
596 B
Solidity

library Utils {
function reduce(
uint256[] memory array,
function(uint, uint) internal returns (uint) f,
uint256 init
) internal returns (uint256) {
for (uint256 i = 0; i < array.length; i++) {
init = f(array[i], init);
}
return init;
}
function sum(uint256 a, uint256 b) internal returns (uint256) {
return a + b;
}
}
contract C {
function f(uint256[] memory x) public returns (uint256) {
return Utils.reduce(x, Utils.sum, 0);
}
}
// ----
// f(uint256[]): 0x20, 0x3, 0x1, 0x7, 0x3 -> 11