いつまでたってもイージーな書き方しかできないから、ちゃんとします。
サンプルは公式から取ってきた
http://coffeescript.org/
一行でObjectを書いちゃう
$('.account').attr class: 'active'
yearsOld = max: 10, ida: 9, tim: 11
↓
$('.account').attr({
"class": 'active'
});
yearsOld = {
max: 10,
ida: 9,
tim: 11
};
読みにくいけど三項演算子ほしい
date = if friday then sue else jill
↓
date = friday ? sue : jill;
じゃっかん読みにくいけど、三項演算子つかいたい。
forまわり
一行でforする
foods = ['broccoli', 'spinach', 'chocolate']
eat food for food in foods when food isnt 'chocolate'
一行でforして配列ゲットする
countdown = (num for num in [10..1])
とか
shortNames = (name for name in list when name.length < 5)
by
なんてやつがある
evens = (x for x in [0..10] by 2)
黒魔術にしか見えないRangeをつかおう
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
start = numbers[0..2]
middle = numbers[3...6]
end = numbers[6..]
copy = numbers[..]
numbers[3..6] = [-3, -4, -5, -6]
存在演算子
http://coffeescript.org/#operators
↑ここの下の方 The Existential Operator
speed ?= 15 #speedがなかったら15が入る
footprints = yeti ? "bear" #yetiがなかったら'bear'が入る
zip = lottery.drawWinner?().address?.zipcode
prototypeに追加
String::dasherize = ->
this.replace /_/g, "-"
↓
String.prototype.dasherize = function() {
return this.replace(/_/g, "-");
};
Objectから抜き出すやつ(なんて名前?nodeでよく{exec}とかでみかけるやつ)
http://coffeescript.org/#destructuring
↑ここの5つめくらい
class Person
constructor: (options) ->
{@name, @age, @height} = options
↓
Person = (function() {
function Person(options) {
this.name = options.name, this.age = options.age, this.height = options.height;
}
Switchで初期化
score = 76
grade = switch
when score < 60 then 'F'
when score < 70 then 'D'
when score < 80 then 'C'
when score < 90 then 'B'
else 'A'
# grade == 'C'
Chained Comparisons
cholesterol = 127
healthy = 200 > cholesterol > 60 # true
do
でクロージャをつくろう
(よくわかってない)
逆にこの応用はつかわないよ
読みにくいので使わない
-
unless
←個人的に直感的でない - 後置の
if
← 単純に読みにくい。「えっ。この行、このタイミングで条件付き?ガチで?」ってなる。
どこで使うのか検討がつかない
theBait = 1000
theSwitch = 0
[theBait, theSwitch] = [theSwitch, theBait]
これで完璧!今日から、ドヤ顔してモテよう!
スタバでドヤリングしてCoffeeでも飲もう!