CoffeeScriptでよりすっきりとコードを書くための小ネタをいくつか
普段、JavaScriptをCoffeeScriptで書くことが多い僕ですが、
もっとすっきりコードを書きたいときの小ネタが他言語にあるのと同様に、
CoffeeScriptにもそういうものが存在します。
そういう小ネタの一部を書き留めておこうと思います。
Q1. 配列の要素に連続した無名のオブジェクトを定義したい時
JavaScript記述例
var sample; sample = [ { id: 0, title: 'hello', body: '犬も歩けば棒に当たる' }, { id: 1, title: 'world', body: '井の中の蛙大海を知らず' }, { id: 2, title: 'hogehoge', body: '下手の考え休むに似たり' } ];
A1. CoffeeScript記述例
sample = [ { id: 0 title: 'hello' body: '犬も歩けば棒に当たる' } { id: 1 title: 'world' body: '井の中の蛙大海を知らず' } { id: 2 title: 'hogehoge' body: '下手の考え休むに似たり' } ]
省略したのは、変数宣言とカンマやセミコロンのみで、行数も多くなりがち。
そこで、次は行数を減らしてみる。
A2. CoffeeScript記述例
sample = [ id: 0 title: 'hello' body: '犬も歩けば棒に当たる' , id: 1 title: 'world' body: '井の中の蛙大海を知らず' , id: 2 title: 'hogehoge' body: '下手の考え休むに似たり' ]
インデントに注意する必要があるが、カンマでオブジェクトの区切りを示す。
これでわりとすっきり書ける。
Q2. 上記の1のような配列の要素などを、より簡単に代入したい時
A. 分割代入を用いる
CooffeeScriptでは以下の様な表記で分割代入を行うことが出来る。
[a, b, c] = sample # a = sample[0], b = sample[1], c = sample[2]
これを利用して、配列や、オブジェクトの各要素を順に定義していく事もできる。
非同期通信でのレスポンスのJSONなどを、より短いコードで代入することが出来て非常に楽、かつわかりやすい。
Q3. aに値があれば、a、なければbを返したい(0を値に含む)
A. 以下のコードで実行できる
a ? b
また、aに値があれば、a、偽ならbを返したい(0を含まない)場合は、
a || b
これはJavaScriptでも使える同じ表記
Q4. クラスにおける、publicなメンバ、privateなメンバなどの定義の仕方
A. 以下のコードで(ry
class Sample # -- PRIVATE STATIC MEMBER -- # _privateStaticMember = '' # -- PRIVATE STATIC METHOD -- # _privateStaticMethod = -> false # -- PUBLIC STATIC MEMBER -- # publicStaticMember = '' # -- PUBLIC STATIC METHOD -- # publicStaticMethod = -> true # -- CONSTRUCTOR -- # constructor: (arg)-> # -- PRIVATE INSTANCE MEMBER -- # _privateInstanceMember = arg # -- PRIVATE INSTANCE METHOD -- # _privateInstanceMethod = -> arg # -- PUBLIC INSTANCE MEMBER -- # @publicInstanceMember = arg # -- PUBLIC INSTANCE METHOD -- # @publicInstanceMember = -> arg
大体こんな感じ、うん、まぁ初見さんお断りな非常にキモい書き方ではあると思う