Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 2 Próxima »

Qual a forma básica de declarar um método tipado?

Deve-se mencionar o tipo na parte declarativa (estrutura da classe) e também na implementação do método, conforme exemplo seguinte.

Sugere-se visitar os Tipos Nativos.


Exemplo - Método Tipado
Class tMyClass
Public Method New() as Object
Public Method myMethod () as Numeric
EndClass

Public Method New() class tMyClass as Object
Return Self

Public Method myMethod () class tMyClass as Numeric
Return 10



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. 

Exemplo - Função com retorno compatível
Function typedFunc() as Numeric
Local nVar := 10 as Numeric
Return nVar
Exemplo - 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)



E o compilador também vai olhar as chamadas de funções?
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.


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.
  • Sem rótulos