Descubra New object, el nuevo comando de 4D para inicializar un objeto. Este comando permite crear un objeto vacío o crearlo con algunas propiedades y valores iniciales. OB SET se vuelve innecesario en varias situaciones, New object es suficiente.
New object también permite reinicializar un objeto temporal en un bucle o simplemente pasar directamente un objeto como parámetro a un comando 4D que solicite un objeto como parámetro, como los comandos Get database measures o GRAPH por ejemplo.
Este nuevo comando cambia tu forma de escribir código 4D en muchas situaciones. New object crea un objeto y devuelve una referencia a él. Permite una mayor flexibilidad en tu código. Este comando es el primero de una serie de nuevas características relacionadas con los objetos … ¡Esté atento!
Ejemplo 1
Este primer ejemplo le muestra cómo puede crear simplemente un objeto vacío. En las versiones anteriores de 4D, la única manera de hacer esto era utilizar JSON Parse(«{}»), lo cual no es obvio. De hecho el comando C_OBJECT declara una variable de objeto que no contiene ningún objeto y el objeto se crea realmente sólo en la primera llamada a OB SET así como se definen algunas propiedades. A partir de la v16 R3 ya no es necesario utilizar JSON Parse, hay un único comando para inicializar sus objetos: New object ¡ Fácil e intuitivo !
// Previous versions
C_OBJECT( ) := ("{}") $obj
$objJSON Parse
//$obj={}
Desde 4D v16 R3 puede utilizar simplemente New object:
// From 4D v16 R3
C_OBJECT( ) := $obj
$objNew object
//$obj={}
Ejemplo 2
También puede utilizar directamente New object dentro de un comando 4D sin crear un objeto antes como se muestra a continuación.
// Previous versions
C_OBJECT( ) ( ) ( ; "path"; "DB.cacheReadBytes") ( ; "withHistory";True) ( ; "historyLength";2*60) := ( )$oParams
C_OBJECT$measures
OB SET$oParams
OB SET$oParams
OB SET$oParams
$measuresGet database measures$oParams
Desde 4D v16 R3 se puede escribir este código utilizando New object:
// From 4D v16 R3
C_OBJECT($measures)
$measures :=Get database measures(New object("path"; "DB.cacheReadBytes"; "withHistory";True; "historyLength";120))
Puede encontrar más ejemplos de código en la siguiente base de datos de ejemplo:
Para más detalles, también puede consultar la documentación. Basta con echar un vistazo al artículo dedicado al comando Nuevo objeto en el manual de lenguaje de 4D v16 R3.