2007年12月03日
Ruby で スイーツ(笑)関数
Ruby はじめました(冷やし中華的な発音で)
LiveCoding#5 にて 「Ruby とか Haskell は分かってて当たり前よね」 という空気だったので、今更ながらに Ruby を勉強しはじめた。
Haskell は難しいらしいので、ちょっと先延ばし。
参考資料:
初めてのコーディング
LiveCoding 後に cuzic さん邸で LiveCoder を中心に反省会というか雑談をしてた。
そのときに話題に上った「スイーツ(笑)」関数で フィボナッチ数 を求めるようにしてみた。
def スイーツ(笑) if 笑 == 1 || 笑 == 2 return 1 end return スイーツ(笑 - 1) + スイーツ(笑 - 2) end (1..10).each{|i| puts スイーツ(i)}
出力
うまくいってる。わーい。
>ruby -KU Test.rb 1 1 2 3 5 8 13 21 34 55
UTF-8 で保存して、-KU オプションをつけて実行した。
ちょっと改善
三項演算子も使えるようだ。あと、Perl みたいに return は省略できるわけね。ふむふむ。
def スイーツ(笑) 笑 == 1 || 笑 == 2 ? 1 : スイーツ(笑 - 1) + スイーツ(笑 - 2) end
これより短くできるんだろうか? えろい人に期待。
雑感
- irb がいい!
- すぐに試せる
- サンプルをちょっと変えたときにどうなるか分かる
- methods とかでメソッド一覧も見れるから、リファレンス代わりにも使える
- オブジェクト指向!
- [] とか + すらもメソッドだったりする設計が好き。内部設計を変に隠そうとしてないから取っ付きやすい。
- "hoge".object_id が毎回違うあたりの潔さがステキ
- だからこそ、シンボルが重要になるわけね。ふむふむ。
- スコープはまだよく分からん
- masuidrive on rails ≫ Blog Archive ≫ PHPユーザの為のRuby/Rails入門の17ページ目に出てくるサンプルが、書いてあることと挙動が違う
- と思ったら、3 日坊主日記 - Rubyのスコープ で突っ込まれてた
- じゃあ、どういうときに変数スコープができるんだろ
続きます
次回は、Web2.O(笑) を作る予定。