Usina BRAdvPL Guia
Entrar
← Todos os tópicos
FUNDAMENTOEm revisão

Parâmetros por valor e por referência

Helper(nValue); Helper(@nValue)

Distingue cópia do valor escalar de alteração da variável chamadora.

Parâmetros por valor e por referênciaAdvPL
01 · VISÃO GERAL

Visão geral

Na chamada comum, atribuir um novo número ao parâmetro não troca a variável numérica do chamador. Com @ na chamada, a função pode modificar essa variável por referência. Argumentos são posicionais; nomes locais não fazem correspondência por nome. O exemplo usa apenas um escalar para separar os dois comportamentos. Arrays e objetos exigem análise adicional de compartilhamento de conteúdo; passar um contêiner não equivale a produzir uma cópia independente de todos os seus elementos. (Fontes: refs. 1–2.)

02 · SINTAXE

Sintaxe

Helper(nValue); Helper(@nValue)
03 · EXEMPLO PRÁTICO

Exemplo comentado

#Include "Protheus.ch"

User Function Ed570()
    Local nValor := 10
    // Apenas a segunda chamada pode trocar a variavel do chamador.
    IncrementValue(nValor)
    ConOut(cValToChar(nValor))
    IncrementValue(@nValor)
    ConOut(cValToChar(nValor))
Return Nil

Static Function IncrementValue(nValor)
    nValor := nValor + 1
Return nValor
Resultado esperado

Após chamada por valor: 10. Após chamada por referência: 11. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

BOAS PRÁTICAS
  • Documentar quais argumentos podem ser alterados e validar tipos antes de calcular. Evitar efeitos ocultos e não passar constantes como variáveis de saída.
  • Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. Programação em ADVPL — treinamento histórico, operador @, p. 7. Consulta em 2026-10-27.
  2. TOTVS. Programação em ADVPL I P10 — passagem de parâmetros entre funções, material histórico. Consulta em 2026-10-27.
Situação
Em revisão
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha