Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Object#methodでMethodオブジェクトを得る

32.method(:next)
#=> #<Method: Fixnum(Integer)#next>

と、Procのようにその場では実行されません。

callで呼んであげれば実行されます

32.method(:next).call
#=> 33

このメソッドをtapと組み合わせて使うと、以下のような禍々しい事もできてしまいます

module Hoge
  def empty?(x, *xs)
    ## something to do
  end

  :empty?.tap(&method(:protected))
end

任意のタイミングでprotectedにしたい時なんかには使えるんじゃ無いでしょうか…(錯乱