10.3. Lista metod unikalnych dla obiektu

Problem

Listy metod zwracane przez opisane wcześniej metody są dość obszerne, a duża część ich zawartości dotyczy zwykle metod dziedziczonych od przodków. Chcielibyśmy tę część odfiltrować, pozostawiając jedynie metody charakterystyczne dla danej klasy czy obiektu.

Rozwiązanie

Od zbioru metod definiowanych przez dany obiekt czy klasę należy odjąć zbiór metod definiowanych przez jego (jej) superklasę. Widoczna poniżej metoda my_methods_only wykonuje to zadanie dla każdego obiektu:

class Object def my_methods_only my_super = self.class.superclass return my_super ? methods - my_super.instance_methods : methods end end s = '' s.methods.size # => 158 Object.instance_methods.size # => 53 s.my_methods_only.size ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.