無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

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

ダイナミッククラス

クラスをダイナミック(dynamic)にすると、実行時にプロパティやメソッドを追加できます。

クラス定義(Kitten.as):

package {

    // dynamicクラス
    public dynamic class Kitten {
        public var name:String = "mii";

        public function run():String {
            return "run!";
        }
    }
}

メイン(dynamic_object.as):

// メイン
public function main():void {

    var k:Kitten = new Kitten();
    k.type = "mike";             // プロパティを後から追加。
    k.age  = 1;
    k.meow = function():String { // メソッドを後から追加。
        return "meow!\n";
    };

    // 追加したプロパティ、メソッドにアクセス。
    stdout.text += k.name + " : " + k.type + " : " + k.age + "\n";
    stdout.text += k.meow();
}

MXML(dynamic_object.mxml):

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete = "main()" >
    <mx:TextArea id="stdout" width="200" height="200" />
    <mx:Script source="./dynamic_object.as"/>
</mx:Application>

コンパイルした結果はこちら

for eachでのプロパティの列挙

動的に追加したプロパティのみ、forで列挙できます。

// メイン
public function main():void {

    var k:Kitten = new Kitten();
    k.type = "mike";             // プロパティを後から追加。
    k.age  = 1;
    k.meow = function():String { // メソッドを後から追加。
        return "meow!\n";
    };

    // プロパティを列挙 / 後から追加したもののみ列挙される。
    for ( var i:Object in k ) {
        stdout.text += i + " : " + k[i] +"\n";
    }
}

コンパイルした結果はこちら



参考:Flex 2 開発ガイド - ダイナミッククラス