プログラミング言語 JSX で Vector2 クラスを作ってみた

phiary に引っ越しました. 毎日プログラミングやWebに関する情報を発信しています! RSS 登録してたまに覗いたり, tweet やハテブして拡散してもらえると幸いです.

Pocket

さっきのやつに引き続き JSX についてのエントリーです.

今回は Dart の時同様 Vector2 を実装してテストしてみました.

Code

vector.js.jsx

Vector2 実装部分です. 書きやすいかも.

/**
 * Vector2
 */
class Vector2 {
    var x = 0;
    var y = 0;
    
    function constructor() {
        this.x = 0;
        this.y = 0;
    }
    
    function constructor(x:number, y:number) {
        this.x = x;
        this.y = y;
    }
    
    function set(x:number, y:number):Vector2 {
        this.x = x;
        this.y = y;
        return this;
    }
    
    function set(p:Vector2):Vector2 {
        this.x = p.x;
        this.y = p.y;
        return this;
    }
    
    function length():number {
        return Math.sqrt(this.x*this.x + this.y*this.y);
    }
    
    function normalize():Vector2 {
        var len = this.length();
        this.x /= len;
        this.y /= len;
        return this;
    }
    
    function log():Vector2 {
        log "(" + this.x.toString() + "," + this.y.toString() + ")";
        return this;
    }
}

Test

Vector2 テスト部分です.

/**
 * Main
 */
class _Main {
    static function main(args : string[]) :void {
        // コンストラクタ & オーバーロード
        new Vector2().log();        // (0,0)
        new Vector2(1, 2).log();    // (1,2)
        
        // Vector2 生成
        var v = new Vector2();
        // setter test
        v.set(3, 4);
        // length test
        log v.length();     // 5
        // normalize test
        v.normalize().log();// (0.6, 0.8)
        // length test
        log v.length();     // 1
    }
}

Result

実行結果です. ちゃんと関数オーバーロードも効いていますね.

(0,0)
(1,2)
5
(0.6,0.8)
1

本日, 19:30 から『Web先端技術味見部#4 (仮テーマはJSX!)』 なんてセミナーがあるみたいです.

場所は DeNA 社らしい. 行きたいけど, 福岡の私は指を加えて Timeline を見てます.

もう満員ですが, 興味があるかたはぜひ. JSX についての話なんかも!!

TRACK BACK URL

POST COMMENT

メールアドレスが公開されることはありません。

COMMENT