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.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas