Tipagem de Dados
Abrangência:
Versão 12 |
#introducao
1. Introdução
Este documento mostra a utilização da tipagem de dados na linguagem ADVPL.
#requisitos
2. Requisitos
Para a utilização dos recursos de tipagem de dados são necessários os requisitos:
- TOTVS Appserver 2.0, binário a partir de dezembro/2014;
- Pré-processador, dezembro 2014, atualizado no TDS;
- Arquivos de include atualizados, dezembro/2014.
#tiposdedados
3. Tipos de Dados
Tipo | Descrição | Indicador |
numeric | Utilizado para valores numéricos inteiros ou decimais, positivos ou negativos. | N |
char / character | Utilizado para valores do tipo caracter | C |
date | Utilizado para armenar datas | D |
block / codeblock | Armazena um bloco de código para macro execução | B |
logical | Armazena valores lógicos, verdadeiro (.T.) ou falso (.F.) | L |
array | Utilizado para armazenar uma matriz de valores | A |
object | Armazena objetos de interface ou classes | O |
#funcoes
4. Funções
A criação de funções com o uso de tipagem de dados deve seguir a seguinte sintaxe:
Function <Nome da Funcao>([<parametro1> as <Tipo1>, <paramentroN as <TipoN>]) [as <Tipo>] ... Return |
---|
#classes
5. Classe
A uso de tipo de dados em classes deve usar a seguinte sintaxe:
Class <Nome da Classe>
// Declaração de propriedades Data <nPropriedad1> [as <tipo>] Data <nPropriedad2> [as <tipo>]
// Declaração de métodos Method New() // Construtor, retorna Self Method <Nome do Método>([<Param1>, <Param2>,...,<ParamN>]) [as <tipo>]
EndClass
// Construtor da Classe Method New() Class <Nome da Classe>
Return Self
// Definição de métodos Method <Nome do Método>(nParam1) Class <Nome da Classe> [as <tipo>] Local n1 as numeric
Parameter <Param1> [as <tipo>]
ConOut("Classe:MethodA")
Return n1 |
---|
#compilacao
6. Compilação
Por exemplo, na compilação do código fonte abaixo:
#include "protheus.ch"
Function xTipagem() Local c1 as character Local n1 as numeric
n1 := "ABCDE" c1 := 10 Return |
---|
Temos o seguinte resultado na compilação:
TIPAGEM.PRW(7) warning W0015 Incompatible Types : cannot convert from 'C' to 'N'
TIPAGEM.PRW(8) warning W0015 Incompatible Types : cannot convert from 'N' to 'C'
#execucao
7. Execução
User Function xTMain() Local c1 as character Local l1 as logical
c1 := "ABCDE" l1 := .T.
ConOut("Chamada 1 - xTLog") ConOut(U_xTLog(l1))
ConOut("Chamada 2 - xTLog") ConOut(U_xTLog(c1)) //Invalid parameter Return
User Function xTLog(l1 as logical) If l1 = .T. ConOut("Logical .T.") Else ConOut("Logical .F.") EndIf
Return l1 |
---|
Chamada 1 – xTLog Logical .T. .T. Chamada 2 - xTLog *** Warning - Mismatched parameters type calling U_XTLOG at parameter 1 - expect ed L->C Logical .F. NIL |
---|