2011年11月13日日曜日

CoffeeScriptを学ぶ(2)

JavaScriptはプロトタイプベースのオブジェクト指向だったので、
クラスという概念はなかったのですが、
CoffeeScriptには、クラスという概念があります。
class Hello
  method:  ->
    alert "hello"
"class クラス名"でクラスを宣言できます。
メソッドは、クラスのブロックで
メソッド名: (引数) ->
  メソッド本体
と書きます。

これをJavaScriptに変換すると、下記のようになります。
var Hello;

Hello = (function() {
  function Hello() {}
  Hello.prototype.method = function() {
    return alert("hello");
  };
  return Hello;
})();

CoffeeScriptのページのサンプルの例を持ってくると
class Animal
  constructor: (@name) ->

  move: (meters) ->
    alert @name + " moved #{meters}m."
Animalとうクラスです。
コンストラクタは "constructor:"で定義できます。
@xxxはインスタンス変数ですね。
ちなみに#{}を使えば、文字列のなかで変数を評価して値を使用できます。(Rubyと同じ構文ですね。)
class Snake extends Animal
  move: ->
    alert "Slithering..."
    super 5

class Horse extends Animal
  move: ->
    alert "Galloping..."
    super 45
継承はextendsを使います。
superでスーパークラスのメソッドを呼び出すことができます。

やっぱりクラスを使うと、比較的大きなコードを書くときは、考えやすくて便利ですよね。

0 件のコメント: