CoffeeScriptとクラス定義

CoffeeScriptのクラス定義について、本家に書かれている基礎的なクラス宣言の内容と、CoffeeScriptの言語レベルでサポートされていないnamespaceについてまとめてみた。

クラス宣言

まずは、基本的なクラス宣言から。

ただ、本家サイトにはstaticなメソッドの宣言方法については明示的な記述が無かった。

それくらい考えればすぐ分かるだろうということなのだろうか?

@記号とthisキーワード

CoffeeScriptでは、@記号はthis.の意味になる。

さらに、引数に@記号を付けると、それがそのままメンバ変数として登録される。

継承

JavaScriptのプロトタイピングではややこしい記述を沢山かかなければいけなかったのが、extendsという構文を利用するだけで、ほんとうにシンプルな構文で継承することができる。

例として、Bookクラスを継承してNoteBookクラスを作成し、NoteBookクラスには新たにwriteメソッドを定義してみた。

namespace(名前空間)の利用

namespaceを使いたいときは、このようにクラス宣言したくなるかもしれないが、これは「MyNamespace is not defined」とエラーになってしまう。

 

エラーを回避するために、あらかじめnamepsaceで使用するオブジェクトを宣言しておかないといけない。

少しでも行数減らしたい場合、このように書いてもうまく動く。

 

深い階層のnamespace内にクラス宣言をしたい場合

 

全体的にエレガントな文法が提供されているCoffeeScriptなのに、namespaceの部分になると、途端に少し格好悪くなってしまう。

なんとかならないだろうか・・。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=741