2020-12-05から1日間の記事一覧

Object#method とカリー化で関数型っぽく(Ruby)

Object#method はメソッドをオブジェクト化するものである。 Method は取り出しの対象であるメソッドがなければ作れませんが、Proc は準備なしに作れます。その点から Proc は使い捨てに向き、Method は何度も繰り返し生成する場合に向くと言えます。また内…

メソッドと Proc の相互変換(Ruby)

これらができたからとて、特にうれしいことはない感じです。メソッド→Proc。Object#method と Method#to_proc を使う。 m = 100.method(:to_s) p m #=>#<Method: Integer#to_s(*)> p m.call(2) #=>"1100100" pr = m.to_proc p pr #=>#<Proc:0x000055e967ad8300 (lambda)> p pr.call(16) #=>"64" Proc→メソッド。Proc は無</proc:0x000055e967ad8300></method:>…

最大値をもつものを集める(Ruby)

例えば都道府県名をローマ字化したものから、文字数の最大値と、その文字数をもつすべての県名を得たいとする。そのとき、こんなメソッドを作ってみるといいかも知れない。 module ExEnumerable refine Enumerable do def max_select pool = [] max_num = -F…