Já alguma vez se interrogou sobre a função de auto-completar 4D ou se perguntou por que razão 4D sugere todas as funções utilizadas no código? Uma vez que um objecto é um tipo muito genérico, o 4D só sabe o que está realmente a armazenar em tempo de execução. Contudo, isso não ajuda muito quando se está a escrever o código.
4D oferece agora uma nova sintaxe alternativa que melhorará muito a auto-completação ao declarar as suas variáveis.
A nova sintaxe é muito simples e consiste na palavra-chave “var”, o nome da variável, e o seu tipo.
var <variableName> : <type>
Pode declarar variáveis tanto com a sintaxe clássica como com a nova sintaxe na mesma base de dados.
Para tipos de dados
Esta sintaxe pode ser usada para definir tipos de dados variáveis. Seguem-se alguns exemplos que mostram a correspondência entre ambas as sintaxes para variáveis de tipos de dados de texto, numéricos, e de imagem.
Sintaxe anterior
C_TEXT($text1;$text2)
C_LONGINT ($num)
C_PICTURE ($pict)
Nova sintaxe
var $text1; $text2: Text
var $num : Integer
var $pict : Picture
Para classes de utilizadores
A ideia das aulas foi introduzida em 4D v18 R3. Se ainda não o fez, deve ler este post no blogue.
Até agora, todas as instâncias de uma classe eram declaradas como um objecto. Agora com a nova sintaxe, pode definir a que instância de classe pertence o seu objecto usando o comando cs e o nome da sua classe. Isto dá-lhe acesso às funções e atributos da classe.
Sintaxe anterior
C_OBJECT($person)
$person :=cs.Person.new()
Nova sintaxe
var $person : cs.Person
$person :=cs.Person.new()
Para classes 4D
Objectos tais como File ou Folder são objectos pertencentes a classes 4D internas. Pode aceder a eles com o comando 4D.
Sintaxe anterior
C_OBJECT($folder)
$folder :=Folder(Current resource folder)
Nova sintaxe
var $folder : 4D.Folder
$folder :=Folder(Current resources folder)
E a ORDA?
Num post de blog anterior, mostrámos-lhe que pode anular as classes ORDA (Dataclass, Entity, and Entity selection) com as suas próprias classes. Também pode usar esta nova sintaxe para desfrutar da auto-completação.
Sintaxe anterior
C_OBJECT($dataclass)
C_OBJECT ($entity)
C_OBJECT (
$entitySelection)
Nova sintaxe
var $dataclass : cs.Company
var $entity : cs.CompanyEntity
var $entitySelection : cs.CompanySelection