Trouvez une valeur d’attribut spécifique en une seule ligne de code !

Traduit automatiquement de Deepl

Vous vous souvenez de l’époque où vous deviez utiliser des boucles imbriquées et des instructions conditionnelles pour récupérer l’attribut d’un objet ? Vous vous retrouviez donc avec un morceau de code long et compliqué ? Eh bien, cette époque est révolue ! Grâce à la notation objet combinée aux collections et à leurs méthodes, vous pouvez désormais écrire du code plus rapidement et de manière plus lisible !

Trouver la valeur d’un attribut spécifique n’a jamais été aussi facile. Prenons un exemple concret et découvrons comment !

Scénario réel

Imaginez que vous voulez filtrer vos processus en cours d’exécution par leur type.

Comme vous le savez peut-être déjà, la commande Get process activity vous permet de récupérer une liste des processus en cours et des utilisateurs connectés. Comme indiqué ci-dessous, une partie des informations retournées est le type de processus :

{ 
   { 
   "processus" :[  
      { 
         "name" : "Main",
         "sessionID" :",
         "number":0,
         "ID":0,
         "visible":false,
         "systemID":"140736073646912",
         "type":-39, /Processus 4D principal
         "state":0,
         "cpuUsage":0.033,
         "cpuTime":922.62008,
         "preemptive":true
      },
     { 
         "name" : "Application process",
         "sessionID" :",
         "number":1,
         "ID":13,
         "visible":true,
         "systemID":"123145536053248",
         "type":-1, //Processus principal
         "state":2,
         "cpuUsage":0.002,
         "cpuTime":187.902836,
         "preemptive":false
      },
     {}
   ]
}


Essayons de trouver le processus principal. Si nous le faisions à l’ancienne, nous utiliserions une boucle For avec une instruction conditionnelle, ce qui nous donnerait un code assez long :

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

L’ancienne méthode fonctionne à merveille, mais nous devons admettre qu’elle est un peu longue à écrire juste pour trouver un seul élément. Bonne nouvelle ! Grâce à la méthode query collection, vous pouvez facilement extraire la valeur que vous voulez … en une seule ligne de code !

C_COLLECTION($result)
$result:
=Get process activity
.processes.requête("type = :1";Main process)

Et voilà, vous avez terminé ! Votre code est propre, facile à comprendre et plus lisible. Vive la simplicité !

Nous n’avons fait qu’effleurer la surface de ce qui peut être fait. Et bien sûr, la méthode query supporte des opérations plus complexes ! Outre l’interrogation d’une collection, vous pouvez également l’ordonner, la réduire, la développer ou la filtrer. Plus de 40 méthodes sont disponibles pour une utilisation optimale des collections !

Avatar
- Responsable du marketing produit - Intissar a rejoint 4D en 2017 en tant que responsable du marketing produit. Elle travaille en étroite collaboration avec les équipes de produits, de marketing, d'ingénierie et de support technique pour mettre en évidence le " pourquoi ", le " comment " et le " quoi " des nouvelles fonctionnalités et des mises à jour auprès de différents publics. Cette proximité lui permet d'élaborer des cadres de messages et de rédiger des contenus approfondis et des échantillons de code pour le blog et le site Web de 4D.Après avoir obtenu un diplôme d'ingénieur en informatique à l'université VINCI, Intissar a travaillé dans plusieurs startups en tant qu'ingénieur logiciel. Son expérience pratique comprend la spécification, la conception et le développement de logiciels, la formation et l'assistance aux utilisateurs, ainsi que la gestion d'équipe.