Zastanawiam się, czy istnieje wywołanie metody Ruby, która pokazuje tylko metody zdefiniowane przez obiekt Ruby, z którego jest wywoływana, w przeciwieństwie do wszystkich metod zdefiniowanych przez jego klasy przodków, co wydaje się robić methods
.Jak mogę sprawdzić metody obiektu Ruby?
Odpowiedz
methods
przyjmuje opcjonalny parametr boolowski, który określa, czy należy również wymienić metody z klasy obiektu i jego nadklas lub tylko z pojedynczych metod obiektu. Tak więc możesz zrobić obj.methods(false)
, aby uzyskać tylko pojedyncze metody zdefiniowane na obj
.
Jeśli chcesz metody zdefiniowane przez klasę obiektu, ale nie te zdefiniowane przez jej nadklasy, możesz to uzyskać, wywołując instance_methods(false)
na klasie obiektu, więc jest to obj.class.instance_methods(false)
.
Masz kilka opcji - object.methods
, object.public_methods
, object.singleton_methods
... to zależy od tego, co chcesz. Ponieważ oboje zwracają tablicę, może chcesz spróbować czegoś takiego:
# obj is the current object
parent = obj.class.superclass
methods = (obj.methods - parent.methods)
Jestem częściowe do obj.methods.sort
ale niektóre inne odpowiedzi są lepsze w pewnych przypadkach, gdy opisują
Można również użyć obj.methods.sort.grep /foo/
, aby znaleźć nazwy metod pasujące do wyrażenia regularnego. Jest to pomocne, gdy masz pojęcie o tym, czego szukasz.
- 1. dostać metody obiektu w Ruby
- 2. Jak mogę przechwycić wywołanie metody w ruby?
- 3. Czy mogę usunąć alias metody w Ruby?
- 4. Groovy odpowiednik obiektu obiektu Ruby # tap
- 5. Jak mogę sprawdzić, czy używam JRuby kontra Ruby?
- 6. Jak mogę sprawdzić, czy ogólny parametr metody jest typem wartości?
- 7. W Pythonie, jak mogę sprawdzić rozmiar obiektu StringIO?
- 8. Odkrywanie członków obiektu Ruby?
- 9. Ruby - Jak mogę uzyskać nazwę metody w sobie?
- 10. Wersja obiektu Ruby
- 11. Jak wyświetlić listę wszystkich metod dla obiektu w Ruby?
- 12. Metody Boolean w Ruby?
- 13. W ES6, jak sprawdzić klasę obiektu?
- 14. Uzyskaj nazwę klasy Ruby bez metody klasy
- 15. Jak dynamicznie wywoływać metody dostępu w Ruby
- 16. Jak sprawdzić bliskość konturu obiektu QGraphicsPathItem?
- 17. Czy można zidentyfikować metody aliasowe w Ruby?
- 18. Zrozumienie metody Ruby #call
- 19. Jak Ci atrapa obiektu w statycznej metody
- 20. Jak dodać dekorator do istniejącej metody obiektu?
- 21. dynamicznie dodawanie atrybutów obiektu Ruby
- 22. Ruby: Łapanie wszystkich metod wysłanych do obiektu
- 23. Jak sprawdzić uruchomiony proces z Ruby?
- 24. Jak sprawdzić wejście STDIN w skrypcie Ruby?
- 25. Jak obudować zawarte metody modułu w Ruby?
- 26. Perl gwintowania metody obiektu
- 27. Jak sprawdzić typ obiektu w C++/CLI?
- 28. Jak sprawdzić poprawność obiektu JSON w java?
- 29. Jak mogę sprawdzić istnienie funkcji w Dart?
- 30. Jak mogę sprawdzić zawartość tablicy?
Masz na myśli 'parent = obj.class.superclass', prawda? – sepp2k
'whatever.methods' zwraca' Tablicę' w wersji Ruby, której używam. To samo z 'whatever.public_methods'. – cHao
@ sepp2k - tak, dziękuję - naprawione! – sethvargo