したがって、actionscript 3 では、Object クラスのインスタンスを連想配列として使用できます。
var doNotHaveSexWith:Object = new Object();
doNotHaveSexWith['mum'] = new Person(...);
doNotHaveSexWith['dad'] = new Person(...);
doNotHaveSexWith['dave'] = new Person(...);
いくつかのクラスがあり、そのメンバーの 1 つは、私のコレクションを含む読み取り専用の「オブジェクト」であるとします。
この「オブジェクト」を返すと、コードの可読性が大幅に低下すると思います。誰かがそれがコレクションであることを知る唯一の方法は、コードまたはコメントを読むことです...
オブジェクトが単純なオブジェクトではなくコレクションであることを知らせる最良の方法は何ですか?
オプション:
「AssociativeArray」などと呼ばれるオブジェクトから拡張するだけの動的クラスを作成して、コードが読みやすくなるようにします...
AS3 Datastructures Libraryのようなものを使用しますが、これは少しやり過ぎのように思えます。
変数名の末尾に Collection という単語を追加するだけですか?
例えば:
var hotPeopleCollection:Object = new Object();
hotPeopleCollection['me'] = new Person(...);
hotPeopleCollection['sandrasully'] = new Person(...);
どう思いますか?
更新: Dictionary を拡張するカスタム クラスを使用することにしました。このようにして、検索関数hasOwnPropertyを賢明なアクセス関数でラップし、クラスに意味のある名前を付けることができます。
私が Object よりも Dictionary を選んだ理由は 2 つあります。
- ディクショナリは、コレクションをより直感的に理解します
- Dictionaryは、検索のために O(1) で実行されるようです。このかなり非公式の辞書と配列とオブジェクトのパフォーマンス ベンチマークを参照してください