目次
CoffeeScript でのクラスの基本をまとめました。
クラス
CoffeeScript では次のようにしてクラスを定義します。
1 |
class Language |
そして、 PHPに似た形でインスタンス化できます。
1 |
l = new Language |
コンストラクタ
コンストラクタは次のように書きます。
1 2 3 |
class Robot constructor: (name) -> @name = name |
@name
は Ruby と同じようにインスタンス変数を表します。 これは下のように省略して書くこともできます。
1 2 |
class Robot constructor: (@name) -> |
そして、コンストラクタに引数がある場合、クラスは次のようにしてインスタンス化します。
1 2 3 |
r = new Robot("taro") r = new Robot "taro" |
括弧はあってもなくても同じです。
このようにして設定されたインスタンス変数は、次のようにしてアクセスできます。
1 2 |
r = new Robot("taro") r.name # => "taro" |
プロパティ・インスタンスメソッド
プロパティは次のように定義します。
1 2 |
class Person age: null |
プロパティもインスタンス変数と同じように、クラス内では @
を先頭につけて、 クラスの外からはインスタンス変数に .
をつけてアクセスできます。
1 2 3 4 5 6 7 8 9 10 11 |
class Building height: null width: null depth: null constructor: (height, width, depth)-> @height = height @width = width @depth = depth b = new Building(100, 200, 300) b.depth # => 300 |
インスタンスメソッドも同様に定義できます。
1 2 3 |
class Sample instanceMethod: () -> # some procedure |
static プロパティ ・ static メソッド
クラスで static 変数 を定義する方法です。 3通り書きましたが、 実質的に同じです。
1 2 3 4 5 6 7 8 |
class Sample @a = 1 @.b = 1 this.c = 1 Sample.a # => 1 Sample.b # => 1 Sample.c # => 1 |
static メソッド (クラスメソッド) も同様にして定義できます。
1 2 3 |
class Sample @staticMethod: () -> # some procedure |