オブジェクトとコレクションの簡単な参照比較
オブジェクトは4DランゲージとQodlyにとって不可欠なものとなりました。
しかし、このタイプの変数を宣言するときは、実際には参照を定義していることになります。では、2つのオブジェクトが実際には1つで、同じ参照を共有しているかどうかを知るにはどうすればいいのでしょうか?
4D 20 R6から、オブジェクト参照の比較はシンプルになりました。それには、= と # 演算子を使うだけです!
このブログ記事では、これらの演算子と、オブジェクトが同じ参照を共有しているかどうかを判断する方法について説明していきます。詳しく見ていきましょう!
複数コレクションの同期ソート
4D には、オブジェクトのコレクションを扱うための強力な機能があります。
たとえば、都市とそれに関連する国や大陸のコレクションを作成することができます。このようなコレクションを、.sort()、.order()、.filter() のようなビルトイン関数で操作するのは簡単です。
4D v20 R3 では、並べ替え処理を簡素化するために、新しい multiSort() 関数が導入されました。この関数を使うことで、複数コレクションの同期ソートが可能です。
改良された .distinct() 関数
データ要素のユニークなリストを取得することは、データ操作において常に役に立ちます。各値の出現回数を取得することが不可欠な場合もあります。Collection と EntitySelection クラスの distinct 関数を使うと、ユニーク値のリストを取得できます。4D v20 では、各ユニーク値の出現回数の取得も可能になりました。
それだけではありません!
データベースでオブジェクトを使用して、ユーザーが入力したカスタムデータを保存することができます。これに対応するため、コード側では、このオブジェクトが持つパスのすべてを把握したいところです。 EntitySelection クラスに追加された distinctPaths 関数で、これが可能になりました。
これらの新しい関数について、くわしく紹介していきます。
コレクションに便利な関数を追加しました!
コレクションのクラス関数は、4D v16 R6 で導入され、map() や reduce() のように、いくつかの関数はフォーミュラを扱えるように進化しました。4D v20 では、同様に実用的な機能がいくつか追加されていますので、ここで紹介します。
コレクション型のリストボックスにおける自動行高
リストボックスは、もっとも汎用性が高くてカスタマイズ可能なフォームオブジェクトです。自動行高機能は、配列型のリストボックスではすでに可能でした。4D v19 R8 では、この機能が コレクションまたはエンティティセレクション型のリストボックス にも拡張されました!
コレクションとコールバックコマンドにおけるフォーミュラの使用
コレクションのメンバー関数がコールバックを必要とする場合に、もっとわかりやすい方法はないかとのご要望を多数いただきました。
この度、このご要望に応えることができました!
4D v19 R6 より、コレクションのメンバー関数に定義するコールバックのほか、EXECUTE METHOD IN SUBFORM、CALL FORM および CALL WORKER コマンドにもフォーミュラが受け渡せるようになりました。もし、コードを簡単な式に減らすことができれば、メソッドを使用せずに直接受け渡すこともできます。
フォームオブジェクトでコレクションとリストを使用する
4D プログラミングでは、コレクションを使用することが多くなっています。4D v19からは、Form機能を含め、いくつかのインターフェースオブジェクトのコンテンツを定義するために、これらを使用することができます。これは、一般的なインターフェイスの管理に非常に便利です。
また、リストの使用方法にも改良を加えました。詳しく見ていきましょう!
ORDA新4Dタグで簡単ループ
ORDAのエンティティセレクションやコレクションを扱う際に、For each…End for eachループを使用したことがあるかと思います。その使い方は簡単でわかりやすいものです。 SHTMLページで4Dタグとして使用したいですか?あるいは、PROCESS 4D TAGSコマンドで使用したいですか?
4D v19で、それが可能になりました。もっと詳しく知るために、読み進めてください。
ORDA – リストボックスの行選択を改善しました。
4D View Proでコレクションを使用して書き込みと読み取りを行う。
何百もの異なる値や数式を読み書きする必要がある場合、コレクションを使用することで、より速く、より簡単に、同時に行うことができます。このために、新しいコマンドが用意されています。 VP SET VALUES, VP Get values, VP SET FORMULASと VP Get formulas.