CoffeeScriptでFizzBuzz書いた
# numという配列に1〜100までの数字を入れる num = [1..100] # numの配列の数だけforループし、条件に応じてnumの値を入れ替える # iは配列の値、つまり1〜100 for i in num # []内はnumの添え字、0から始まるためiの値から-1して数字を揃える num[i-1] = "Fizz" if i % 3 is 0 # 1回目のループ時、上のコードは num[1] = Fizz if 1 % 3 is 0となる。 num[i-1] = "Buzz" if i % 5 is 0 num[i-1] = "FizzBuzz" if i % 3 is 0 and i % 5 is 0 # numの中身をアラート alert num#### 結果  CoffeeScriptの可読性のおかげで、見通しの良いコードになったと思います。過剰なコメントを除けば。 仕様通り動くコードは30分くらいで作れたけれども、一言一句なんでそうなるのかをちゃんと調査するのに+1時間くらいかかった感じ。調査の結果、わかったことは全部コメントに書いてあるとおりです。 ハマったポイントは2つ。 * for文の宣言に何をどう書いていいものかわからなかった * iの「どっから出てきたのあなた感」、慣れない・・・ * 配列の添字が0から始まるのが謎だった * i-1とかこのとってつけた感は、かっこ悪すぎやしないか 両方とも、プログラマの皆様的には超当たり前ポイントなのでしょうが、慣れてないといちいちつまづくなあ。書いてみるとよくわかる。**あたしゃ何もわかっちゃいねえ**ということが。 ### そして、上のコードをJSに変換したのがこちら
var i, num, _i, _j, _len, _results; num = (function() { _results = []; for (_i = 1; _i <= 100; _i++){ _results.push(_i); } return _results; }).apply(this); for (_j = 0, _len = num.length; _j < _len; _j++) { i = num[_j]; if (i % 3 === 0) { num[i - 1] = "Fizz"; } if (i % 5 === 0) { num[i - 1] = "Buzz"; } if (i % 3 === 0 && i % 5 === 0) { num[i - 1] = "FizzBuzz"; } } alert(num);おおお、なんだか複雑になった!! 「for i in num」すら、ひーひー書いた私には、到底書けないコードが出来上がってます。 これを読んでから、CoffeeScriptを読み返すと、とってもシンプル。わたしにもCoffeeScriptなら書けるかもしれない、と思わせてくれるものがあるね。 先が長いけど、がんばろう。
関連記事
-
Webとかガジェットとか
母ちゃんがゲーム実況をはじめてみた理由
-
Webとかガジェットとか
レシート1枚10円で売れるONEアプリ、試してみた
-
Webとかガジェットとか
メモアプリ使い分け2018年版 #iOSメモ #Trello #Ulysses #NoteShelf2
-
Webとかガジェットとか
Google Home Mini を百均のスポンジホルダーで壁付けにしてみた
-
Webとかガジェットとか
iOS操作自動化アプリ「Workflow」で作った、Dropbox Cameraのレシピを共有します
-
Webとかガジェットとか
Pebble Time のおかげで、電話を逃さなくなった。買ってよかった。