Już dzieci wiedzą, że w Ruby wszystko – nawet metoda – jest obiektem. Nie wszyscy jednak zdają sobie sprawę, że metodę można od obiektu odczepić (UnboundMethod), pobawić się nią, a następnie przypiąć do innego tej samej klasy:
s1 = "obiekt s1"
instance_method = s1.method( :upcase )
unbound_method = instance_method.unbind
puts unbound_method.arity # 0
s2 = "obiekt s2"
instance_method = unbound_method.bind( s2 )
instance_method.call() # => OBIEKT S2
Szkoda tylko, że nie ma to żadnego praktycznego zastosowania ;-)


