Sub-rotina aninhada – Wikipédia, a enciclopédia livre

Em programação, uma subrotina aninhada (ou função aninhada) é uma subrotina encapsulada noutra. O contexto da subrotina aninhada é limitado à 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». D Programming Language 2.0 (em inglês). Digital Mars. Consultado em 9 de julho de 2008 
  2. «Nested Functions». Using the GNU Compiler Collection (GCC) (em inglês). GNU Project. Consultado em 6 de janeiro de 2007