Los objetos son geniales, todo el mundo lo dice. Además de su maravillosa flexibilidad, son increíblemente rápidos. Puede buscar entre millones de registros en sólo una fracción de segundo. 4D v16 permite incluso ordenar por atributos del objeto, y hacer cálculos como la suma o la media.
Con 4D v16 R4, el lenguaje 4D ha sido drásticamente mejorado para hacer el uso de objetos mucho más cómodo – con el soporte de la notación de objetos. ¡Rápido, flexible, eficiente y ahora elegante!
¿Qué es posible?
Los objetos del lenguaje 4D pueden manejarse utilizando la notación de objetos estándar para obtener o establecer sus valores. Con la notación de objetos
- se puede acceder a las propiedades de los objetos utilizando un símbolo de «punto» (por ejemplo, empleado.nombre)
- se puede acceder a los elementos de la colección de objetos mediante corchetes (por ejemplo, habitaciones[2])
- se puede acceder a los subobjetos incrustados y a las propiedades de los subobjetos mediante una secuencia de símbolos (por ejemplo, empleado .hijos[2].edad).
Buenas noticias, ahora tienes un medio para deshacerte de todos esos OB Get y OB SET ¡en tu código! ¿Y sabes qué? La ejecución del código es 10 veces más rápida con la notación de objetos en comparación con OB Get/OB SET que la notación /.
Ejemplos de notación de objetos
Digamos que tenemos un $o que contiene la siguiente información:
{ "Lastname": "Doe", "Firstname": "John", "Avatar": "[object Picture]" "Child": [{ "Name": "Susan", "Age": 3 } , { "Name": "Bob", "Age": 8 }] }
Para recuperar el atributo «Firstname«, se escribe:
Con la notación de objetos
C_TEXT($name)
$name :=$o.Firstname
Sin notación de objetos
C_TEXT($name)
$name :=OB Get($o; "Firstname")
Para recuperar el atributo «Name» de los segundos hijos, se escribe:
Con notación de objeto
C_TEXT($name)
$name :=$o.Child[1].Name
Sin notación de objeto
ARRAY OBJECT($aChild;0)
C_TEXT ($name)
OB GET ARRAY ($o; "Child";$aChild)
$name :=OB GET($aChild{2}; "Name")
Para añadir otro hijo, se escribe
Con la notación de objeto
$o.Niño[2].Nombre:="Mike"
$o .Niño[2].Edad:=9
Sin notación de objeto
ARRAY OBJECT($aChild;0)
C_OBJECT ($kid)
OB GET ARRAY ($o; "Child";$aChild)
OB SET ($kid; "Name"; "Mike")
OB SET ($kid; "Age";9)
APPEND TO ARRAY ($aChild;$kid)
OB SET ARRAY ($o; "Child";$aChild)
Más información sobre las colecciones >
Para añadir una imagen en un atributo de objeto, se escribe:
Con notación de objeto
C_PICTURE($img)
READ PICTURE FILE("img.jpg";$img )
$o .Avatar:=$img
Sin la notación de objeto
C_PICTURE($img )
READ PICTURE FILE ("img.jpg";$img )
OB SET ($o; "avatar";$img)
Más información sobre las imágenes en los objetos >
Para utilizar la notación de puntero, se escribe:
Con la notación de objetos
C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=$p->Nombre
Sin notación de objeto
C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=OB Get($p->; "Firstname")
¿Cómo puedo activar la notación de objetos?
Para poder beneficiarse de la notación de objetos, debe ir a la página de Ajustes de Compatibilidad del cuadro de diálogo Configuración de la base de datos y hacer clic en el botón «Activar la notación de objetos»:
Hay algunos requisitos previos antes de activar la notación de objetos, pero le ayudamos a prepararse: