トップ «前の日記(2005年11月16日) 最新 次の日記(2005年11月21日)» 編集

ohai日誌

2003|12|
2004|01|02|03|04|05|06|07|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|06|08|10|11|
2008|01|02|03|04|05|07|09|
2009|01|02|
2013|06|12|
2014|01|02|03|04|06|09|10|12|
2015|04|
2016|09|
2018|02|

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 に同じものがあった。


トップ «前の日記(2005年11月16日) 最新 次の日記(2005年11月21日)» 編集