1行のコードで特定の属性値を検索!

Deeplからの自動翻訳

オブジェクトの属性を取得するために、ネストされたループや条件文を使用しなければならなかった時代を覚えていますか?それで結局、長くて複雑なコードになったりしていませんでしたか?でも、もうそんな時代は終わりました。オブジェクト記法とコレクション、そしてそのメソッドのおかげで、より速く、より読みやすいコードを書くことができるようになりました

特定の属性の値を見つけるのは、かつてないほど簡単です。では、実際のシナリオを見ながら、その方法を考えてみましょう。

実際のシナリオ

実行中のプロセスをタイプ別にフィルタリングする場合を考えてみましょう。

すでにご存知かもしれませんが 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 activity
.processes.query("type = :1";Main process)

これで完了です。これで、あなたのコードはきれいになり、理解しやすく、読みやすくなりました。シンプルさ万歳!

まだ、できることのほんの一端を紹介したに過ぎません。もちろん、query メソッドはもっと複雑な操作にも対応しています!コレクションを照会するだけでなく、順序付け、削減、拡張、フィルタリングも可能です。コレクションを最適に利用するために、40以上のメソッドが用意されているのです!

Avatar
Intissarは、プロダクトマーケティングマネージャーとして2017年に4Dに入社しました。彼女は、プロダクト、マーケティング、エンジニアリング、およびテクニカルサポートチームと密接に連携し、さまざまな顧客に対して新機能の「理由」、「方法」、「内容」をアピールするために働いています。この密接な連携により、メッセージングフレームワークを作成し、4Dブログやウェブサイトのための詳細なコンテンツやコードサンプルを書き上げることができるのです。VINCI大学でコンピュータサイエンスのエンジニアの学位を取得後、彼女はソフトウェアエンジニアとしていくつかのスタートアップ企業で働きました。ソフトウェアの仕様、設計、開発、ユーザートレーニング、サポート、チームマネジメントなどの実務経験を持ちます。