Qual a forma básica de dar tipos aos parâmetros?
Function name (parm1 as type1, parm2 as type2, ..., parmN as typeN)
Visite os Tipos Nativos.
Exemplo - Declaração de parâmetros tipados
Function typedFunc(parm1 as Numeric, parm2 as Character) as Variant
Quais as checagens feitas em relação aos parâmetros?
Existem dois momentos em que a consistência dos parâmetros é checada:
- Em tempo de compilação
- Estando a função ou método no mesmo fonte, o compilador observa se a quantidade de argumentos passados é coerente;
- Se os tipos dos argumentos passados são compatíveis com os tipos declarados.
- Em tempo de execução
- Realiza os mesmos tratamentos de tempo de compilação, mas com potencial de olhar também funções ou métodos que foram definidos em outros fontes.
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