読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Dictionary

Flex

Flexで、キーと値をペアで保持する構造(rubyでいうHashてきなもの)を使いたい場合、flash.utils.Dictionaryが使えます。

  • JavaScriptだとObjectで何とかしますが(Flexでも同じように何とかできますが)、
    • Objectと違って、Dictionaryではキーにオブジェクトが使えます
    • Objectではキーは常に文字列で、Objectを指定するとtoStringした値が使用されます。
  • キーの同一性は「===」でチェックされます。
    • JavaRubyみたいにハッシュ+equalsのような比較メソッドで評価されるわけではありません
    • 「===」なので比較ロジックのカスタマイズもできません。
// ディクショナリ
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的なモノで識別したい場合には便利かも。