Usina BRGuía AdvPL
Ingresar
← Todos los temas
FUNDAMENTOEn revisión

Parámetros por valor y por referencia

Helper(nValue); Helper(@nValue)

Distingue copia escalar de modificación de variable del llamador.

Parámetros por valor y por referenciaAdvPL
01 · DESCRIPCIÓN GENERAL

Descripción general

En llamada común asignar número al parámetro no cambia variable numérica del llamador. Con @ en llamada, función puede modificarla por referencia. Argumentos son posicionales, no se corresponden por nombre local. Ejemplo escalar separa comportamientos. Arrays/objetos requieren analizar contenido compartido; pasar contenedor no copia independientemente cada elemento. (Fuentes: refs. 1–2.)

02 · SINTAXIS

Sintaxis

Helper(nValue); Helper(@nValue)
03 · EJEMPLO PRÁCTICO

Ejemplo comentado

#Include "Protheus.ch"

User Function Ed570()
    Local nValor := 10
    // Solo segunda llamada puede cambiar variable del llamador.
    IncrementValue(nValor)
    ConOut(cValToChar(nValor))
    IncrementValue(@nValor)
    ConOut(cValToChar(nValor))
Return Nil

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

Tras llamada por valor: 10. Por referencia: 11. En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.

BUENAS PRÁCTICAS
  • Documentar argumentos mutables y validar tipos. Evitar efectos ocultos y no pasar constantes como variables de salida.
  • En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.

Contenido relacionado

REFERENCIAS
  1. TOTVS. Programação em ADVPL — treinamento histórico, operador @, p. 7. Consulta el 2026-10-27.
  2. TOTVS. Programação em ADVPL I P10 — passagem de parâmetros entre funções, material histórico. Consulta el 2026-10-27.
Estado
En revisión
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR
0 comentario(s) aprobado(s)

Comentarios

Todavía no hay comentarios aprobados.

Inicia sesión con Google o Microsoft para comentar.

Desarrollado con Usina Docs · Alpha