Finden Sie einen bestimmten Attributwert in einer einzigen Codezeile!

Automatisch übersetzt von Deepl

Erinnern Sie sich noch an die Zeiten, als Sie verschachtelte Schleifen und bedingte Anweisungen verwenden mussten, um die Attribute eines Objekts abzurufen? So endete man mit einem langen und komplizierten Stück Code? Nun, diese Zeiten sind vorbei! Dank der Objektnotation in Kombination mit Sammlungen und ihren Methoden können Sie Ihren Code jetzt schneller und besser lesbar schreiben!

DieSuche nach dem Wert eines bestimmten Attributs war noch nie so einfach. Schauen wir uns ein reales Szenario an und entdecken wir, wie das geht!

Realitätsnahes Szenario

Stellen Sie sich vor, Sie möchten Ihre laufenden Prozesse nach ihrem Typ filtern.

Wie Sie vielleicht schon wissen, ermöglicht der Get process activity Befehl eine Liste der laufenden Prozesse und der verbundenen Benutzer abrufen. Wie unten gezeigt, ist ein Teil der zurückgegebenen Informationen der Prozesstyp:

{ 
   { 
   "Prozesse":[  
      { 
         "name": "Main",
         "sessionID":"",
         "Anzahl":0,
         "ID":0,
         "sichtbar":false,
         "systemID":"140736073646912",
         "Typ":-39, //Haupt-4D-Prozess
         "Zustand":0,
         "cpuUsage":0.033,
         "cpuTime":922.62008,
         "preemptiv":true
      },
     { 
         "name": "Anwendungsprozess",
         "sessionID":"",
         "number":1,
         "ID":13,
         "sichtbar":true,
         "systemID":"123145536053248",
         "type":-1, //Hauptprozess
         "status":2,
         "cpuUsage":0.002,
         "cpuTime":187.902836,
         "preemptiv":false
      },
     {}
   ]
}


Lassen Sie uns versuchen, den Hauptprozess zu finden. Wenn wir es auf die alte Weise machen würden, müssten wir eine For -Schleife mit einer bedingten Anweisung verwenden, was zu einem ziemlich langen Stück Code führt:

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

Die alte Methode funktioniert wunderbar, aber wir müssen zugeben, dass sie etwas langwierig ist, nur um ein einziges Element zu finden. Gute Nachrichten! Dank der query collection-Methode können Sie ganz einfach den gewünschten Wert extrahieren … in einer einzigen Zeile Code!

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

Und Sie sind fertig! Ihr Code ist sauber, leicht zu verstehen und besser lesbar. Lang lebe die Einfachheit!

Wir haben nur an der Oberfläche dessen gekratzt, was möglich ist. Und natürlich unterstützt die Methode query auch komplexere Operationen! Neben der Abfrage einer Sammlung können Sie diese auch ordnen, reduzieren, erweitern oder filtern. Mehr als 40 Methoden stehen für eine optimale Nutzung von Sammlungen zur Verfügung!

Avatar
- Product Marketing Manager Intissar kam 2017 als Product Marketing Manager zu 4D. Sie arbeitet eng mit den Produkt-, Marketing-, Engineering- und technischen Support-Teams zusammen, um den verschiedenen Zielgruppen das "Warum", das "Wie" und das "Was" neuer und aktualisierter Funktionen zu vermitteln. Diese enge Zusammenarbeit ermöglicht es ihr, Botschaften zu formulieren und ausführliche Inhalte und Codebeispiele für den 4D Blog und die Website zu schreiben. Nach ihrem Abschluss als Diplom-Ingenieurin für Informatik an der VINCI Universität arbeitete Intissar als Software-Ingenieurin in mehreren Startups. Ihre praktische Erfahrung umfasst Software-Spezifikation, -Design und -Entwicklung, User-Training und -Support sowie Team-Management.