Encuentre el valor de un atributo específico en una sola línea de código.

Traducido automáticamente de Deepl

¿Recuerdas los días en que tenías que usar bucles anidados y sentencias condicionales para recuperar el atributo de un objeto? ¿Y acababas con un trozo de código largo y complicado? Pues bien, ¡esos días se han acabado! Gracias a la notación de objetos combinada con las colecciones y sus métodos, ahora puedes escribir código más rápido y de forma más legible.

Encontrar el valor de un atributo específico nunca ha sido tan fácil. Echemos un vistazo a un escenario de la vida real y descubramos cómo.

Escenario de la vida real

Imagina que quieres filtrar tus procesos en ejecución por su tipo.

Como ya sabe, el comando Get process activity le permite recuperar una lista de procesos en ejecución y usuarios conectados. Como se muestra a continuación, parte de la información devuelta es el tipo de proceso:

{ 
   { 
   "procesos":[  
      { 
         "nombre": "Principal",
         "sessionID":",
         "número":0
         "ID":0
         "visible":false,
         "systemID":"140736073646912",
         "type":-39, /Proceso principal de 4D
         "state":0
         "cpuUsage":0.033
         "cpuTime":922.62008
         "preemptive":true
      },
     { 
         "name": "Proceso de aplicación",
         "sessionID":",
         "número":1
         "ID":13
         "visible":true,
         "systemID":"123145536053248",
         "type":-1, /Proceso principal
         "state":2
         "cpuUsage":0.002
         "cpuTime":187.902836,
         "preemptive":false
      },
     {}
   ]
}


Intentemos encontrar el proceso principal. Si lo hiciéramos a la antigua, utilizaríamos un bucle For con una sentencia condicional, lo que nos deja un trozo de código bastante largo:

C_OBJECT($obj)
C_LONGINT ($i)
ARRAY OBJECT (processesCol;0 )

$obj:
=Get process activity
OB GET ARRAY
($obj;"processes";processesCol)
ARRAY OBJECT ($result;0 )

For ($i
;1;Size of array(processesCol))
If
(OB Get(processesCol{$i}; "type")= Main process)
APPEND TO ARRAY($result;processesCol{$i})
End if

End for

La forma antigua funciona como un encanto, pero tenemos que admitir que es un poco largo de escribir sólo para encontrar un solo elemento. Pero, ¡buenas noticias! Gracias al método query puedes extraer fácilmente el valor que quieres… ¡en una sola línea de código!

C_COLLECTION($result)
$resultado:
=Get process activity
.processes.consulta("type = :1";Main process)

Y ya está. Tu código es limpio, fácil de entender y más legible. ¡Viva la simplicidad!

Sólo hemos arañado la superficie de lo que se puede hacer. Y por supuesto, el método query admite operaciones más complejas. Además de consultar una colección, también puedes ordenarla, reducirla, ampliarla o filtrarla. Hay más de 40 métodos disponibles para un uso óptimo de las colecciones.

Avatar
• Gerente de Mercadeo de Producto - Intissar ingresó a 4D en 2017 como Gerente de Mercadeo de Producto. Trabaja estrechamente con los equipos de producto, mercadeo, ingeniería y soporte técnico para destacar el "por qué", el "cómo" y el "qué" de las funcionalidades nuevas y actualizadas a diferentes audiencias. Esta proximidad le permite elaborar marcos de mensajería y escribir contenidos en profundidad y muestras de código para el blog y el sitio web de 4D. Después de graduarse como ingeniera en Ciencias de la Computación en la universidad de VINCI, Intissar trabajó en varias startups como ingeniera de software. Su experiencia práctica incluye la especificación, el diseño y el desarrollo de software, la formación y el apoyo a los usuarios y la gestión de equipos.