今回のネタは完全に趣味の領域なので…おそらく実用性皆無です。
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"