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.
Tipo | Descrição | Valor padrão na inicialização sem atribuir | Tipo na inicialização | Tipo após inicializado |
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, positivos ou negativos. Local eDbl1 as double 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 | 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 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 | Use para armazenar uma matriz n-dimensional de valores Local aArr1 as array Local aArr2 := {1, 2, 3} as array | Nil | U | A |
object | 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 com quantidade variável. | U | J | |
"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: