Qual a forma básica de declarar uma função tipada?
Function name (parâmetrosparameters) AS TYPE as Type Visite os Tipos Nativos.
No atual estágio, Static Function, Main Function e Function podem ser tipadas, sem restrições. A tipagem para User Function (e possivelmente outras formas) ainda está em processo de validação e homologação.
Bloco de código |
---|
language | java |
---|
title | Exemplo - Declaração básica de propriedades tipadas |
---|
| Function typedFunc() as Numeric
|
O compilador checa se o retorno da função é compatível com o seu tipo declarado? Sim, o compilador verifica e está bem atento a isso, para que a qualidade dos produtos Protheus seja cada vez melhor. Os exemplos de . A seguir, observe uma função sem erros de compilação e outra com erro de retorno.
Bloco de código |
---|
language | java |
---|
title | Exemplo - Propriedade tipada com valor inicialFunção com retorno compatível |
---|
| Function typedFunc()Private nVar as Numeric init
Local nVar := 10
Public cVar as Character init as Numeric
Return nVar |
Bloco de código |
---|
language | java |
---|
title | Exemplo - Função com retorno incompatível |
---|
| Function typedFunc() as Numeric
Local cVar := "I Love TLPP"
| Posso deixar uma propriedade sem definição de tipo ou dar um tipo de objeto específico? Sim, de maneira idêntica ao que se faz com uma variável (veja Tipando Variáveis)Return cVar // ERRO DE COMPILAÇÃO (Função Numeric tentando retornar um Character) |
E o compilador também vai olhar as chamadas de funções? Sim, o compilador também vai ficar atento a isso. Chamadas de funções declaradas no mesmo fonte passam pela checagem de tipos.
Bloco de código |
---|
language | java |
---|
title | Exemplo - Função com retorno incompatível |
---|
| Function typedFunc() as Numeric
Local nVar := 10 as Numeric
Return nVar
Function typedTest() as Logical
Local cVar := "I Love TLPP" as Character
Local cResult as Character
cResult := cVar + typedFunc() // ERRO DE COMPILAÇÃO (typedFunc é Numeric e, portanto, não pode ser somada a cVar, que é Character.
Return .T. |
|