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クラスを操作する。