唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

CoffeeScriptのクラスでのメンバへのアクセス制御とか

CoffeeScript勉強中です.
JavaScriptのクラスの面倒な部分が隠蔽されていてわかりやすいです.
以下のコードを例にして説明します.

class Test
    constructor: (@hoge) ->
#publicな変数
    public: 1
#public staticな変数
    @publicStatic = 2
#private staticな変数
    privateStatic = 3
#表示用関数
    getPublic: -> @public
    getPublicStatic: -> Test.publicStatic
    getPrivateStatic: -> privateStatic

コンストラクタ

    constructor: (@hoge) ->

上のように変数名に@をつけて書くのは下のような@hoge(this.hoge)への代入の省略記法です.

    constructor: (hoge) ->
        @hoge = hoge

publicな変数

    public: 1

メソッド内から参照するときには"@変数名"の形で参照します

    getPublic: -> @public

public staticな変数

    @publicStatic = 1

メソッド内から参照するときには"クラス名.変数名"の形で参照します

    getPublicStatic: -> Test.publicStatic

private staticな変数

    privateStatic = 1

メソッド内から参照するときには"変数名"の形で参照します

    getPrivateStatic: -> privateStatic

privateな変数

staticでないprivateな変数を作るにはconstructor内で変数と関数を定義すればよいみたいですね.