Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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]

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

参考もと