coffeescript

メンバ変数、メソッド

class Class1
  _privateVal = 100
  publicVal: 200

  constructor: ->
    _privateFunc()
    @publicFunc()

  _privateFunc = ->
    hoge

  publicFunc: ->
    hoge

=で定義するとprivateになる。デフォルト(普通の定義)がprivateと考える。:で定義するとプロパティとして扱われ、結果的にpublicになる。スコープは一階層上のものなのでアクセスするときは@を頭につける。

関数のネスト

class Class1
  _privateFunc = ->
    subFunc = ->  ##subFunc : -> はエラー
      hoge
    subFunc()

リスト内包表記

0 for [0..2]
>> 0,0,0

i+1 for i in [0..2]
>> 1,2,3

0 for i in [0..2]
0 for in [0..2]
>> 0,0,0

[0..2] for i in [0..2]
>> 0,1,2,0,1,2,0,1,2
 
 0 for [0..2]  for i in [0..2]
(0 for [0..2]) for i in [0..2]
0 for [0..2] for in [0..2]
>> 0,0,0,0,0,0,0,0,0
二次元配列にはなっていない

(0 for [0..2] for [0..2])
>>二次元配列。なぜかはわからないけど、一番外にかっこをつけると二次元配列を作れる。

はまったこと

class Class1
  func1: (arg1) ->
    hoge

のなかの(arg1)のかっこがないとダメってどんな仕様だよ