À partir de 4D v20 R3, vous pouvez dire adieu à l’époque où il fallait écrire plusieurs lignes de code pour les déclarations et les affectations de variables. Désormais, vous pouvez rationaliser votre code, éliminer les redondances et améliorer votre efficacité en toute simplicité.
Voici comment !
Jusqu’à présent, nous pouvions écrire :
var <variableName> : <type>
Nous améliorons cette syntaxe pour vous permettre de déclarer et d’initialiser votre variable en une seule ligne.
type déduit
var <variableName> := <value>
Ici, le type est omis et sera déterminé par le compilateur ou l’interprèteur en fonction de la valeur fournie. Il est conseillé d’utiliser cette approche exclusivement avec des types scalaires provenant de valeurs, de commandes ou de méthodes afin d’éviter les erreurs de compilation.
Exemple :
//BLOB
var $vxBlob : Blob
INTEGER TO BLOB(0x0206; $vxBlob; Native byte ordering)
var $blob:=$vxBlob
//Boolean
var $bool:=True
//Null
var $null:=Null
//Real
var $num:=(569/2)
//Object
var $obj:={att1: 1}
//Pointer
var $point:=->$obj
//Text
var $text:="Hello"
//Collection
var $col:=[1; 2; 3]
//Date
var $date:=Current date
//Time
var $time:=Current time
//Picture
var $pict : Picture
var $image:=$pict
Lorsque vous utilisez ce style d’écriture, rappelez-vous que 4D essaie de déduire le type le plus général. Par exemple, 4D utilise le type Real et non le type Integer lorsqu’une variable est initialisée par 10. Cela vous permet d’utiliser cette variable avec n’importe quel type de calcul. Si vous souhaitez utiliser un Integer, vous devez déclarer explicitement le type de votre variable.
Type déclaré et initialisation
var <variableName> : <type> := <value>
Ici, la variable est créée avec le type donné puis initialisée avec la valeur.
Ce type de déclaration doit être utilisé lorsque vous initialisez une variable avec un type complexe comme un attribut de classe, une variable interprocessus ou une variable globale. Si vous ne spécifiez pas le type dans ces cas, l’interpréteur évaluera l’expression et déduira le type, tandis que le compilateur ne sera pas en mesure de déduire le type et utilisera un type variant à la place. C’est le cas par exemple :
var $myClass:={myAttribute: "Hello there!"}
var $myAttribute:=$myClass.myAttribute
// The interpreter knows the type of $myClass.myAttribute: $myAttribute is a declared as Text
// The compiler doesn't know the type of $myClass.myAttribute: $myAttribute is a declared as variant
Alors, plongez-vous dans la documentation, explorez les possibilités infinies qu’offre cette fonctionnalité et constatez par vous-même comment cet ajout qui change la donne façonnera l’avenir de vos efforts de codage.