Bye Bye Moore

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

UnboundMethodという奇怪なクラスについて

例の如くRubyで遊んでいた所、へんなクラスを見つけました。

Array.instance_method(:push)
#=> #<UnboundMethod: Array#push>

...Methodクラスがでてくるもんだと思ってましたがUnboundとは一体...

公式リファレンスを頼りにガチャガチャ弄り回した所、
bindメソッドを使う事でMethodクラスに置換できる事が判明

Array.instance_method(:push).bind([1,2,3])
#=> #<Method: Array#push>

こうなれば、後はcallするだけです

Array.instance_method(:pop).bind([1,2,3]).call
#=> 3

Array.instance_method(:push).bind([1,2,3]).call
#=> [1, 2, 3]

...記事を書いておいて何ですが、一体どういう局面で使うものなんでしょうか…??

参考もと