mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
27 lines
596 B
Solidity
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
|