Dictionary
Flexで、キーと値をペアで保持する構造(rubyでいうHashてきなもの)を使いたい場合、flash.utils.Dictionaryが使えます。
- JavaScriptだとObjectで何とかしますが(Flexでも同じように何とかできますが)、
- Objectと違って、Dictionaryではキーにオブジェクトが使えます。
- Objectではキーは常に文字列で、Objectを指定するとtoStringした値が使用されます。
- キーの同一性は「===」でチェックされます。
// ディクショナリ var dictionary:Dictionary = new Dictionary(); dictionary[key1] = "aaa"; dictionary[key2] = "bbb"; log( dictionary[key1] ); // "aaa" log( dictionary[key2] ); // "bbb" // オブジェクトだと、toString()した値が使われるので // ただのオブジェクトを指定すると同じキーという扱いになる。 var obj:Object = new Object(); obj[key1] = "aaa"; obj[key2] = "bbb"; log( obj[key1] ); // "bbb" log( obj[key2] ); // "bbb" log( obj[new Object().toString()] ); // "bbb"
うーん、微妙。
- 比較ロジックをカスタマイズできる(toString()を変更すればOK)、という点ではObjectの方が便利かな。
- オブジェクトID的なモノで識別したい場合には便利かも。