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 が毎回違うあたりの潔さがステキ
    • だからこそ、シンボルが重要になるわけね。ふむふむ。
  • スコープはまだよく分からん

続きます

次回は、Web2.O(笑) を作る予定。