Otra forma de codificar: La notación de objetos

Traducido automáticamente de Deepl

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:

Prepárese para la notación de objetos >

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.