2005年11月20日
_ Rubyのproc
以下のようなものを思いついた。
def bind(sym, *p1) proc{|*p2| obj, *args = *(p1+p2); obj.__send__(sym, *args)} end class Symbol def to_proc proc{|obj, *args| obj.__send__(self, *args)} end end
これで、
(1..10).inject(&:+) # => 55
とか
(10..20).map(&bind(:*,3)) # => [30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60]
とかできる。
と思っていたら Symbol#to_proc のほうは Ruby/Extensions に同じものがあった。