Pythonのような文法を持っているのが特徴のようです。
このCoffeeScriptを学ぼうと思い、いくつかのサンプルを書いてみました。
まず基本、FizzBuzzです。
(下記はalertで書いたので実行すると大変なことになるから気をつけてね)
for a in [1..100] if a%15 == 0 alert "FizzBuzz" else if a%3 == 0 alert "Fizz" else if a%5 == 0 alert "Buzz" else alert a特徴としては、Pythonのようにインデントがブロックを表しています。
インデントでブロックにすると、やっぱり見やすいですよね。
また、メソッドも()がつかないです。
これをJavaScriptに変換すると、以下のようになります。
var a; for (a = 1; a <= 100; a++) { if (a % 15 === 0) { alert("fizzbuzz"); } else if (a % 3 === 0) { alert("fizz"); } else if (a % 5 === 0) { alert("buzz"); } else { alert(a); } }今度はクイックソートを実装してみます。 関数は
関数名 -> (引数) (関数本体)のです。 CoffeeScriptはwhile文が使えます
sort = (array, l, r) -> mid = ~~(l+r/2) return if l >= r i = l j = r pivot = array[mid] while true while array[i] < pivot i++ while array[j] > pivot j-- break if i >= j t = array[i] array[i] = array[j] array[j] = t sort array, l, i-1 if l < i-1 sort array, j+1, r if j+1 < r a = [1, 4, 3, 7, 6, 5, 2, 8] sort a, 0, 7 alert a下記はJavaScriptに変換したときのコードです。
var a, sort; sort = function(array, l, r) { var i, j, mid, pivot, t; mid = ~~(l + r / 2); if (l >= r) return; i = l; j = r; pivot = array[mid]; while (true) { while (array[i] < pivot) { i++; } while (array[j] > pivot) { j--; } if (i >= j) break; t = array[i]; array[i] = array[j]; array[j] = t; } if (l < i - 1) sort(array, l, i - 1); if (j + 1 < r) return sort(array, j + 1, r); }; a = [1, 4, 3, 7, 6, 5, 2, 8]; sort(a, 0, 7); alert(a);
0 件のコメント:
コメントを投稿