オブジェクトの属性を取得するために、ネストされたループや条件文を使用しなければならなかった時代を覚えていますか?それで結局、長くて複雑なコードになったりしていませんでしたか?でも、もうそんな時代は終わりました。オブジェクト記法とコレクション、そしてそのメソッドのおかげで、より速く、より読みやすいコードを書くことができるようになりました
特定の属性の値を見つけるのは、かつてないほど簡単です。では、実際のシナリオを見ながら、その方法を考えてみましょう。
実際のシナリオ
実行中のプロセスをタイプ別にフィルタリングする場合を考えてみましょう。
すでにご存知かもしれませんが Get process activityコマンドを使用すると、実行中のプロセスや接続しているユーザーの一覧を取得できます。下図のように、返される情報の一部はプロセスの種類です。
{ { "プロセス":[ { "名前": "メイン", "sessionID": "です。 "number":0。 "ID":0。 "visible":false。 "systemID":"140736073646912", 「type":-39, //メイン4Dプロセス "state":0。 "cpuUsage":0.033, "cpuTime":922.62008です。 "プリエンプティブ":true }, { "name": "アプリケーションプロセス", "sessionID": "です。 "number":1。 "ID":13。 "visible":true。 "systemID":"123145536053248", "type":-1、//メインプロセス "state":2。 "cpuUsage":0.002, "cpuTime":187.902836, "プリエンプティブ":false }, {} ] }
メインプロセスを探してみましょう。従来の方法だと、条件文付きのFor ループを使うので、かなり長いコードになります。
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
古い方法は魅力的に働きますが、1つの要素を見つけるためだけに書くには少し長いと認めざるを得ません。良いニュースです。朗報です! queryコレクションメソッドのおかげで、欲しい値を簡単に取り出すことができます…1行のコードで!
C_COLLECTION($result)
.
$result:=Get process activityprocesses.query
("type = :1";Main process)
これで完了です。これで、あなたのコードはきれいになり、理解しやすく、読みやすくなりました。シンプルさ万歳!
まだ、できることのほんの一端を紹介したに過ぎません。もちろん、query メソッドはもっと複雑な操作にも対応しています!コレクションを照会するだけでなく、順序付け、削減、拡張、フィルタリングも可能です。コレクションを最適に利用するために、40以上のメソッドが用意されているのです!