Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Section

Qual a forma básica de declarar uma função tipada?

Function name (parâmetros) 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
languagejava
titleExemplo - 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 seguintes retratam, respectivamente, uma função sem erros de compilação e outra com erro de retorno. 

Bloco de código
languagejava
titleExemplo - Função com retorno compatível
Function typedFunc() as Numeric
Local nVar := 10 as Numeric
Return nVar
Bloco de código
languagejava
titleExemplo - Função com retorno incompatível
Function typedFunc() as Numeric
Local cVar := "I Love TLPP"
Return cVar  // ERRO DE COMPILAÇÃO (Função Numeric tentando retornar um Character)



Vai me dizer que E o compilador também vai olhar as chamadas de funções tipadas?
Sim, o compilador também vai ficar atento a isso. No atual estágio, se a função chamada estiver no mesmo fonte, poderemos checar eventuais inconsistências de tipos.


Bloco de código
languagejava
titleExemplo - 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.