Escopo de
variáveis
O escopo determina onde uma variável pode ser acessada e por quanto tempo seu valor permanece disponível durante a execução.
Local nNumero := 10O identificador informa que nNumero pertence ao escopo local da função.
01LOCAL
Função atual
LOCAL
Função atual
Criada a cada ativação da função. Chamadas recursivas recebem conjuntos independentes de variáveis locais.
- Visibilidade
- Somente a rotina que declarou
- Duração
- Até o retorno da função
User Function Pai()
Local nVar := 10
Filha()
Return .T.
Static Function Filha()
// nVar não está visível aqui
Return02STATIC
Rotina ou arquivo
STATIC
Rotina ou arquivo
Dentro de uma função, permanece restrita à rotina e conserva o valor entre chamadas. Fora das rotinas, pode ser acessada no arquivo atual.
- Visibilidade
- Depende do local da declaração
- Duração
- Durante a execução do ambiente
User Function Contador()
Static nChamadas := 0
nChamadas++
ConOut(nChamadas)
Return03PRIVATE
Função criadora e chamadas descendentes
PRIVATE
Função criadora e chamadas descendentes
Pode ser declarada ou criada implicitamente por atribuição. Uma Private de mesmo nome em uma função chamada oculta temporariamente a anterior.
- Visibilidade
- Escopo dinâmico
- Duração
- Até o retorno da função criadora
User Function Pai()
Private nVar := 10
Filha()
Return .T.
Static Function Filha()
ConOut(nVar) // 10
Return04PUBLIC
Todo o ambiente
PUBLIC
Todo o ambiente
Permanece disponível após o retorno da função criadora. Sem inicialização explícita, assume o valor lógico falso (.F.).
- Visibilidade
- Global, salvo quando ocultada por Private
- Duração
- Até o fim da execução
User Function CriarStatus()
Public lSistemaAtivo := .T.
Return
User Function ConsultarStatus()
ConOut(lSistemaAtivo)
ReturnDeclare a intenção
Prefira `LOCAL` para dados temporários e `STATIC` quando houver necessidade real de preservar estado. Use `PRIVATE` e `PUBLIC` somente quando a visibilidade dinâmica ou global fizer parte do desenho da rotina.
- SILVA, Waterloo Ferreira da. A Linguagem AdvPL. 2004, p. 22-24. Conteúdo resumido, revisado e exemplos adaptados.
- TOTVS. O Contexto de Variáveis dentro de um Programa. TDN.
- TOTVS. Criação e Atribuição de Variáveis. TDN.
- TOTVS. SDK Microsiga Protheus. TDN — referência complementar.
