Vyhledání konkrétní hodnoty atributu na jediném řádku kódu!

Automaticky přeloženo z Deepl

Vzpomínáte si na doby, kdy jste museli pro získání atributu objektu používat vnořené smyčky a podmíněné příkazy? Takže jste skončili s dlouhým a komplikovaným kusem kódu? Tak tyhle časy jsou pryč! Díky objektovému zápisu v kombinaci s kolekcemi a jejich metodami nyní můžete psát kód rychleji a čitelněji!

Vyhledání hodnoty konkrétního atributu nebylo nikdy jednodušší. Pojďme se podívat na reálný scénář a zjistit jak!

Scénář z reálného života

Představte si, že chcete filtrovat běžící procesy podle jejich typu.

Jak už možná víte, metoda Get process activity Příkaz umožňuje získat seznam běžících procesů a připojených uživatelů. Jak je uvedeno níže, součástí vrácených informací je typ procesu:

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


Zkusme najít hlavní proces. Kdybychom to udělali starým způsobem, použili bychom cyklus For s podmíněným příkazem, čímž bychom získali poměrně dlouhý kus kódu:

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

Starý způsob funguje jako kouzlo, ale musíme přiznat, že je trochu zdlouhavý na psaní jen kvůli nalezení jednoho prvku. Dobrá zpráva! Díky query collection můžete snadno získat požadovanou hodnotu … na jediném řádku kódu!

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

A máte hotovo! Váš kód je čistý, přehledný a čitelnější. Ať žije jednoduchost!

Právě jsme se dotkli povrchu toho, co lze udělat. A metoda query samozřejmě podporuje i složitější operace! Kromě dotazování na kolekci je můžete také uspořádat, zmenšit, rozšířit nebo filtrovat. Pro optimální využití kolekcí je k dispozici více než 40 metod!

Avatar
• Produktový marketingový manažer • Intissar nastoupila do 4D v roce 2017 jako produktový marketingový manažer. Úzce spolupracuje s týmy produktovými, marketingovými, inženýrskými a technické podpory, aby aby sdělila různému publiku „proč“, „jak“ a „co“ o nových a aktualizovaných funkcích. Tato úzká spolupráce jí umožňuje formulovat zprávy a psát hloubkový obsah a příklady kódu pro 4D blog a web. Po absolvování inženýrského titulu v oboru informatiky na univerzitě VINCI pracovala Intissar v několika startupech jako softwarový inženýr. Mezi její praktické zkušenosti patří specifikace softwaru, návrh a vývoj, školení a podpora uživatelů a správa týmu.