Estou com uma dúvida quanto a tipagem de variáveis no AdvPL e no TLPP.
Digamos que eu declare uma variável tipada como array. Percebi que essa variável iniciará como nulo até eu atribuir um valor para ela. Existe alguma de eu tipar a variável e ela já iniciar com um valor padrão sem precisar de uma atribuição posterior? Por exemplo: array igual a {}, numeric igual a 0, character igual a '', etc.
O motivo da dúvida é: digamos que eu possua três variáveis Array e que irei utilizar um aAdd para preencher esses arrays, sempre terei que atribuir ela um array vazio pra depois utilizar o aAdd, se não será gerado um erro de execução (expected A -> U).
Isso é uma falha grande do TLPP, inclusive é um dos motivos que cria uma certa resistência a migração pra essa linguagem, gasta-se o dobro de linhas/tempo para se “declarar” uma variável.
Dessa maneira realmente funciona e o conteúdo da variável ficará como Array vazio na memória. Se apenas declarar ficará com o conteúdo nulo. Valeu pela Dica!
O método acima apesar de funcionar tem um efeito colateral indesejado.
Se por ventura houver um erro de digitação, do tipo:
Local aArray := “” as array
Isso não será avaliado no momento da compilação (Mesmo com includes atualizados - TDS e VsCode - TLPP e PRW). O erro só será capturado em tempo de execução.
O Contrário não funciona:
Local aArray as array := {} (Erro de Sintaxe é apresentado)
Aí fica a dúvida:
Isso significa que é desaconselhável declarar e atribuir na mesma sentença
ou