Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/327912/newLayout.css |
Portuguese | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipagem de Dados
#introducao
1. Introdução#requisitos prw". Para quem está desenvolvendo em TLPP (extensão ".tlpp"), há muitos avanços em tipagem de dados. Confira a documentação de Tipagem em TLPP. 2. Requisitos
3. Tipos de DadosOs tipos de dados disponíveis são: numeric, character, date, codeblock, logical, array e object. Uma letra é utilizada para indicar cada tipo de dado, essa letra será mostrada nas mensagens de erro.
#funcoes
4. Funções
O <Nome da Funcao> deve seguir os mesmo critérios usados em uma função sem tipagem de dados. Cada parâmetro deve ser especificado com o tipo de dado desejado.O retorno da função também pode ter um tipo de dado indicado. 5. Classe
Em classes, podemos utilizar a tipagem de dados em propriedades e métodos. Na construção de métodos os parâmetros e seus respectivos tipos devem ser especificados após a declaração das variáveis locais. #compilacao 6. CompilaçãoNo processo de compilação de código fonte, que utilize os recursos de tipagem de dados, serão avaliados conforme as definições, as variáveis, parâmetros e retorno de dados. Caso alguma inconsistência na definição dos tipos seja encontrada será emitida uma mensagem de warning mostrando em qual linha está à divergência na declaração dos dados. Por exemplo, na compilação do código fonte abaixo:
Temos o seguinte resultado na compilação: TIPAGEM.PRW(7) warning W0015 Incompatible Types : cannot convert from 'C' to 'N' TIPAGEM.PRW(8) warning W0015 Incompatible Types : cannot convert from 'N' to 'C' 7. ExecuçãoDurante a execução de uma função e/ou classe que utilize o recurso de tipagem de dados existe uma verificação do tipo da variável que é utilizada na passagem de parâmetro com o que foi definido no protótipo da função. Caso os tipos de dados sejam diferentes será exibido uma mensagem no console do TOTVS AppServer e o valor NIL será atribuído a variável que foi passada como parâmetro, causando um comportamento diferente do esperado ou erro de tipo de dado. Para exemplificar este comportamento temos o seguinte exemplo:
Neste exemplo temos duas funções sendo que a primeira (xTMain) faz duas chamadas da função xTLog, sendo que a primeira chamada utiliza um parâmetro lógico, como esperado no protótipo da função e a segunda utiliza um parâmetro do tipo character, incorreto para a função. Após a execução temos os seguintes resultados:
Na chamada 1 a execução ocorre conforme o esperado pois o parâmetro utilizado é do mesmo tipo indicado no protótipo da função. Na chamada 2 é passado um parâmetro do tipo character, diferente do logical indicado no protótipo da função, sendo assim quando a função xTLog é executada o valor da variável l1 é NIL, diferente de true (.T.) atribuído a ela antes da chamada da função, sendo assim o resultado é diferente da primeira chamada. |