Usina BRGuía AdvPL
Ingresar
← Todos los temas
FUNDAMENTOPublicado

Tipado de datos en AdvPL

Local <variável> As <tipo> · Function <nome>(<parâmetro> As <tipo>) As <tipo>

Declara tipos de variables, parámetros, retornos, propiedades y métodos para hacer visibles las inconsistencias.

Tipos de datosVariablesFuncionesClasesCompilación
01 · DESCRIPCIÓN GENERAL

Descripción general

AdvPL posee tipado dinámico, pero permite declarar tipos explícitamente en archivos .PRW. Estas anotaciones ayudan al compilador y al AppServer a identificar asignaciones, parámetros y retornos incompatibles. Los tipos documentados son numeric, character, date, codeblock, logical, array, object y variadic. El tipado de TLPP tiene recursos y documentación propios.

02 · SINTAXIS

Sintaxis

Local <variável> As <tipo> · Function <nome>(<parâmetro> As <tipo>) As <tipo>

Parámetros

numeric
NOpcional

Valores numéricos enteros o decimales, positivos o negativos.

character / char
COpcional

Cadenas de caracteres.

date
DOpcional

Valores de fecha.

codeblock / block
BOpcional

Bloques de código evaluables en ejecución.

logical
LOpcional

Valores lógicos verdadero (.T.) o falso (.F.).

array
AOpcional

Matrices que pueden contener valores y estructuras.

object
OOpcional

Instancias de clases u objetos de interfaz.

variadic
HOpcional

Cantidad variable de parámetros en funciones.

03 · EJEMPLO PRÁCTICO

Variables locales tipadas

User Function ExTipos()
    Local cMensaje As Character
    Local nCantidad As Numeric
    Local dHoy As Date
    Local lActivo As Logical
    Local aElementos As Array

    cMensaje  := "Registro disponible"
    nCantidad := 3
    dHoy      := Date()
    lActivo   := .T.
    aElementos := {"A", "B", "C"}

    If lActivo
        MsgInfo(cMensaje + " - elementos: " + CValToChar(nCantidad))
    EndIf
Return
Resultado esperado

Cada variable declara el tipo esperado, facilitando la identificación de asignaciones incompatibles.

04 · EJEMPLO PRÁCTICO

Parámetro y retorno tipados

User Function TotalPedido(nValor As Numeric, nCantidad As Numeric) As Numeric
    Local nTotal As Numeric

    nTotal := nValor * nCantidad
Return nTotal
Resultado esperado

El prototipo documenta que ambos parámetros y el retorno son numéricos.

05 · EJEMPLO PRÁCTICO

Propiedad y método de clase

Class Pedido
    Data nTotal As Numeric
    Method New(nValor As Numeric) As Object
EndClass

Method New(nValor As Numeric) Class Pedido
    ::nTotal := nValor
Return Self
Resultado esperado

La propiedad, el parámetro y el retorno del constructor tienen tipos declarados.

06 · EJEMPLO PRÁCTICO

Incompatibilidad detectable

User Function ExIncompativel()
    Local cCodigo As Character
    Local nTotal  As Numeric

    nTotal  := "ABC"
    cCodigo := 10
Return
Resultado esperado

El compilador puede emitir el aviso W0015 por conversiones incompatibles entre C y N. Corrige el origen o convierte el valor conscientemente.

BUENAS PRÁCTICAS
  • Utiliza As <tipo> en variables locales, parámetros, retornos de funciones, propiedades y métodos.
  • El tipado explícito mejora el contrato de la rutina y permite que el compilador avise sobre incompatibilidades.
  • En llamadas tipadas, AppServer también compara el tipo recibido con el prototipo definido.
  • La referencia oficial indica requisitos históricos desde diciembre de 2014; confirma el comportamiento en la versión utilizada.
ERRORES COMUNES
  • No ignores los avisos de compilación: asignar character a numeric, o al contrario, contradice el contrato declarado.
  • Según la documentación, un argumento incompatible puede llegar como NIL, producir un aviso en la consola y alterar el flujo esperado.
  • No confundas el tipado de .PRW con el de TLPP (.tlpp), que tiene recursos y documentación separados.
  • El tipado explícito no sustituye la validación de NIL, contenido, intervalos y reglas de negocio.

Contenido relacionado

REFERENCIAS
  1. TOTVS. Tipado de Datos. TDN. Creado por Thays Tagliaferri de Grazia; última modificación por Cristiano Lino Felicio el 25 de agosto de 2021.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR