A linguagem TLPP já disponibiliza vários tipos nativos, que podem ser utilizados na declaração de variáveis, propriedades de classes, funções, métodos e parâmetros. O nome do tipo, sua descrição e o seu caractere indicador estão relacionados abaixo.
Indicador | | Valor padrão na inicialização sem atribuir | Tipo na inicialização (VALTYPE) | Tipo após inicializado (VALTYPE) | numeric | Use para valores numéricos de ponto flutuante, positivos ou negativos. Este é o tipo numérico padrão do Protheus, continue usando ele para os seus programas de cálculos para precisam fazer ajuste de precisão. Local nNum1 as numeric Local nNum2 := 3 as numeric | 0 (zero) | N | N | integer | Use para valores numéricos inteiros, positivos ou negativos. Vai fazer um "for" ou criar um contador sequencial ... use ele. Local iInt1 as integer Local iInt2 := 7 as integer | 0 (zero) | N | N | double | Use para valores numéricos de ponto flutuante |
numeric | Utilizado para valores numéricos inteiros ou decimais, positivos ou negativos. Local eDbl1 as double |
N | char / character | Utilizado para valores do tipo caracter | C | date | Utilizado para armazenar datas | D | block / codeblock | Armazena um bloco de código para macro execução | B | Local eDbl2 := 32.79 as double | 0 (zero) | N | N | decimal | Use para valores numéricos de alta precisão, essenciais para tratamentos monetários. (DEC_CREATE) Local fDec1 as decimal Local fDec2 := DEC_CREATE( 7233.759119, 21, 20 ) as Decimal
| Nil | U | F | character | Use para valores textuais (alfanuméricos, pontuação, especiais, ...) Local cStr1 as character Local cStr2 := "TotvsTec" as character | "" (caracter vazio) | C | C | logical | Utilizado para |
logical | Armazena valores lógicos, verdadeiro (.T.) ou falso (.F.) Local lBol1 as logical Local lBol2 := .T. as logical | .F. (falso) | L | L | date | Utilize para armazenar datas Local dDte1 as date Local dDte2 := CToD("08/29/2021") as date | 31/12/1899 | D | D | array | Utilizado Use para armazenar uma matriz n-dimensional de valores Local aArr1 as array Local aArr2 := {1, 2, 3} as array | Nil | U | A | object | Armazena Use para se referir a objetos de interface ou classes Local oObj1 as object Local oObj2 := MyClass():New() as object | Nil | U | O | json | Use para criar um objeto json Local jJsn1 as json Local jJsn2 := JsonObject():New() as Json | Nil | U | J | codeblock | Use para declarar que é um bloco de código Local bBlk1 as codeblock Local bBlk2 := {|r,l|r*l} as CodeBlock | Nil | U | B | variant | Utilizado para dizer que é um tipo variante e auto polimórfico, podendo assumir qualquer dos tipos disponíveis Local xVar1 as variant Local xVar2 := 4 as variant Local xVar3 := "Texto" as variant | Nil | U | Conforme o tipo atribuído | variadic | Utilizado na declaração de funções para indicar passagem de parâmetros | de quantidades variáveis em funçõesHcom quantidade variável. Não pode ser usado para instanciar uma variável. |
| H | H | "sem tipo definido" | Se não for declarado nenhum dos tipos, a variável será tratada como "variant" Local xVar1 Local xVar2 := .T. Local xVar3 := Date() | Nil | U | Conforme o tipo atribuído |
Obs. Em TLPP, as variáveis de tipo numeric, character e date não devem ser comparados com Nil. Segue um exemplo: Local nNum as numeric If (nNum == Nil) ... EndIf No exemplo acima, dará erro de compilação, pois a variável nNum é igual a 'N' e já tem o valor default 0 (zero). Caso precise fazer esta comparação com Nil, o tipo de nNum deve ser modificado para Variant.
Veja também: VALTYPE DEC_CREATE |