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 件のコメント:
コメントを投稿