Sub-rotina aninhada

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Em programação, uma subrotina aninhada (ou função aninhada) é uma subrotina encapsulada noutra. O escopo da subrotina aninhada é limitado a subrotina que a encapsula. Isso significa que ela pode ser chamada somente pela subrotina que a encapsula, ou pelas subrotinas diretamente ou indiretamente aninhadas pela mesma subrotina encapsuladora. O aninhamento é teoricamente ilimitado, ainda que na prática somente alguns níveis são aceitos, o que depende da implementação.

Essa técnica é uma forma de encapsulamento, e é útil para dividir tarefas procedimentais em subtarefas que fazem sentido somente localmente. Em linguagens que aceitam a técnica, outros tipos de aninhamento também são geralmente aceitos, como o aninhamento de constantes e tipos de dado.

Havendo suporte, as subrotinas aninhadas são uma forma comum de implementar algoritmos com laços de repetição em linguagens funcionais.

Exemplos[editar | editar código-fonte]

Segue um exemplo em Pascal:

function E(x: real): real
    function F(y: real): real
    begin
        F := x + y
    end
begin
    E := F(3)
end

A função F está aninhada em E (note que x é visível em F, enquanto y é invisível fora de F).

Suporte[editar | editar código-fonte]

Linguagens que suportam subrotinas aninhadas incluem:

Ver também[editar | editar código-fonte]

Referências

  1. Functions - Nested Functions (em inglês) D Programming Language 2.0. Digital Mars. Página visitada em 9 de julho de 2008.
  2. Nested Functions (em inglês) Using the GNU Compiler Collection (GCC). GNU Project. Página visitada em 6 de janeiro de 2007.