Function pointer как аргумент
Для начала посмотрите на код ниже:
В предыдущем примере у нас есть три функции. f1 - самая простая и возвращает то, что получает в аргументах.
f2 функция с function pointer a ожидает в качестве аргумента функцию со специальной сигнатурой.
В f3 мы вызываем функцию f2 и передаем функцию f1, как параметр. И в данном примере она просто вернет число 27.
Достаточно необычный и редкий формат функций в смарт контрактах. Даже в конкурсных аудитах за все время я встречал их один или два раза.
#function #pointer
Для начала посмотрите на код ниже:
contract FunctionPointer {
function f1(uint256 x) internal pure returns(uint256) {
return x;
}
function f2(function(uint256) internal pure returns(uint256) a) internal pure returns(uint256) {
return a(27);
}
function f3() public pure returns(uint256) {
return f2(f1);
}
}
В Solidity вы можете создавать функции, которые будут принимать другие функции в качестве аргументов. Они называются function pointer.В предыдущем примере у нас есть три функции. f1 - самая простая и возвращает то, что получает в аргументах.
f2 функция с function pointer a ожидает в качестве аргумента функцию со специальной сигнатурой.
В f3 мы вызываем функцию f2 и передаем функцию f1, как параметр. И в данном примере она просто вернет число 27.
Достаточно необычный и редкий формат функций в смарт контрактах. Даже в конкурсных аудитах за все время я встречал их один или два раза.
#function #pointer
👍3🔥2