タグ

ブックマーク / yuroyoro.hatenablog.com (2)

  • Rubyのデフォルト引数で再帰 - ( ꒪⌓꒪) ゆるよろ日記

    Rubyのデフォルト引数では、他の引数に依存した式を書ける。地味に便利。 [1] pry(main)> def foo(a, b = a * 2) [1] pry(main)* puts b [1] pry(main)* end => nil [2] pry(main)> foo(3) 6 => nil 再帰もかける。デフォルト引数で再帰させてフィボナってみる [3] pry(main)> def fib(n,r = (n <=1 ? n : fib(n-2) + fib(n-1))) [3] pry(main)* r [3] pry(main)* end => nil [4] pry(main)> 11.times do |n| puts "fib(#{n}) => #{fib(n)}" end fib(0) => 0 fib(1) => 1 fib(2) => 1 fib(3) =>

    Rubyのデフォルト引数で再帰 - ( ꒪⌓꒪) ゆるよろ日記
    YaSuYuKi
    YaSuYuKi 2012/10/16
    これは実にきもいですね
  • 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記

    記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 注意点として、この記事は、プログラマ厨二病のひとつである「ラムダ症候群(λ-Syndrome)」に罹患した患者にRubyを書かせると、どんなヒドいことになるか実例を示したものであり、けしてこのようなプログラミングスタイルを推奨するものではない。 なぜ関数合成? まず、なぜ関数合成が必要か、そのモチベーションを示す。 前回、単なるメソッド呼び出しや一引数の関数適用のためだけにブロックを記述する必要はない、という話をした。 だが、以下のようなSymbolのArrayがあり、各要素をto_sした上でupcaseしたい場合はどうするか? irb(main):003:0> arr = [:user, :entry, :article, :comment, :category] => [:user,

    「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記
    YaSuYuKi
    YaSuYuKi 2012/08/10
    なんとなく何が起きているかはわかるが使ってはいけないような気がしてならない……なぜだ
  • 1