A partir de 4D v20 R3, puede decir adiós a los días de escribir múltiples líneas de código para las declaraciones y asignaciones de variables. Ahora, puede racionalizar su código, eliminar redundancias y aumentar la eficiencia con facilidad.
He aquí cómo.
Hasta ahora, podíamos escribir:
var <variableName> : <type>
Mejoramos esta sintaxis para que puedas declarar e inicializar tu variable en una sola línea.
tipo inferido
var <variableName> := <value>
Aquí, el tipo se omite y será determinado por el compilador o el intérprete basándose en el valor proporcionado. Es aconsejable emplear este enfoque exclusivamente con tipos escalares originados por valores, comandos o métodos para evitar errores de compilación.
Ejemplo:
//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
Cuando utilice este estilo de escritura, recuerde que 4D intenta deducir el tipo más general. Por ejemplo, 4D utiliza el tipo Real y no el tipo Entero cuando una variable es inicializada por 10. Esto le permite utilizar esta variable con cualquier tipo de cálculo. Si desea utilizar un Entero, debe declarar explícitamente el tipo de su variable.
Tipo declarado e inicialización
var <variableName> : <type> := <value>
Aquí, la variable se crea con el tipo dado y luego se inicializa con el valor.
Este tipo de declaración debe utilizarse cuando se inicializa una variable con un tipo complejo como un atributo de clase, una variable interproceso o una global. Si no especifica el tipo en estos casos, el intérprete evaluará la expresión y deducirá el tipo, mientras que el compilador no podrá deducir el tipo y utilizará un tipo variante en su lugar. Por ejemplo:
var $myClass:={myAttribute: "Helle 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
Así pues, consulta la documentación, explora las infinitas posibilidades que ofrece esta función y comprueba de primera mano cómo esta novedad cambiará el futuro de tus proyectos de programación.