Содержание

Внутренние вызовы функций

Функции текущего контракта можно вызывать напрямую (“внутренне”), рекурсивно, как видно в следующем примере:

pragma solidity ^0.4.16;

contract C {
    function g(uint a) public pure returns (uint ret) { return f(); } // Вызов функции f в функции g
    function f() internal pure returns (uint ret) { return g(7) + f(); }
}

Эти вызовы функций преобразуются в простые прыжки внутри EVM. Это приводит к тому, что текущая память не очищается, то есть передача ссылок памяти на внутренние вызовы очень эффективна. Внутренне можно вызывать только функции одного и того же контракта.

Материал был полезен? Поделитесь в соц. сетях:
Логотип echain.ru

Добавить комментарий

Ваш e-mail не будет опубликован.