以下の内容はhttps://shuzo-kino.hateblo.jp/entry/2014/12/01/235339より取得しました。


instance_execとprocを使って、微妙に似ているメソッドチェインを簡略化して書く

今回のネタは完全に趣味の領域なので…おそらく実用性皆無です。

instance_execとprocを使って、微妙に似ているメソッドチェインを簡略化して書く事ができます。

たとえば…次のような実用性ゼロの似たメソッドチェインがあるとします。

"s".upcase.next.downcase

"s".next.upcase.next.next

こんなだと、例えば

ary = ["s", "s".next].each do |s|
  s.upcase.next
end
ary[0].downcase
ary[1].next

みたいにやるかも知れません。

ここで、以下のようなProcオブジェクトを用意し…

test = -> { upcase.next}
#=> #<Proc:0x007fd5e913f878@(pry):40 (lambda)>

基礎の部分に適用してみます。

"s".instance_exec &test
=> "T"

返ってきたのは文字列。そう、このままメソッドチェインが続行できます。やったぜ

 "s".instance_exec(&test).downcase
#=> "t"

 "s".next.instance_exec(&test).next
#=> "V"



以上の内容はhttps://shuzo-kino.hateblo.jp/entry/2014/12/01/235339より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14