map が inject みたくシンボルでメソッド名受けてくれないかな

Enumerable#map が同#inject みたく Symbolでメソッド名引数に受けてくれないかなあと思った魔改造
# これどこかで要望にあがってたような気もするけどどうだったかな

module Enumerable
  def map(*vars, &block)
    (vars.size>0 ? collect{|e| e.send *vars} : self).collect &block
  end # def map(*vars, &block)
end # module Enumerable

或いは一行で書くなら

module Enumerable; def map(*vs, &b); (vs.size>0 ? collect{|e| e.send *vs} : self).collect &b; end; end

こんな感じか

ちょっと追記

Enumerable#map の改造では Array#map まではこうならない。Arrayクラスは何か特別な事してるのかな。

class Array; def map(*vs, &b); (vs.size>0 ? collect{|e| e.send *vs} : self).collect &b; end; end

直接 Arrayクラスを操作する。