Мне интересно, есть ли вызов метода Ruby, который показывает только методы, определенные объектом Ruby, из которого он вызван, в отличие от всех методов, определенных его классами предков, что и делает methods
.Как проверить методы объекта Ruby?
ответ
methods
принимает необязательный логический параметр, который указывает, следует ли также перечислить методы из класса объекта и его суперклассов или только одноточечные методы объекта. Таким образом, вы можете сделать obj.methods(false)
, чтобы получить только однотонные методы, определенные на obj
.
Если вы хотите, чтобы методы, определенные классом объекта, но не те, которые определены его суперклассами, вы можете получить это, вызвав instance_methods(false)
в классе объекта, так что это obj.class.instance_methods(false)
.
У вас есть несколько вариантов - object.methods
, object.public_methods
, object.singleton_methods
... это зависит от того, что вы хотите. Так как они оба возвращают массив, вы можете попробовать что-то вроде:
# obj is the current object
parent = obj.class.superclass
methods = (obj.methods - parent.methods)
Я неравнодушен к obj.methods.sort
, но некоторые из других ответов лучше в некоторых случаях, как они описывают
Вы также можете использовать obj.methods.sort.grep /foo/
, чтобы найти имена методов, соответствующие регулярному выражению. Это полезно, когда у вас есть представление о том, что вы ищете.
- 1. Ruby: Как получить методы класса без объекта?
- 2. Как проверить методы объекта в классе viewcontroller?
- 3. Как проверить личные методы объекта в Scala
- 4. Как перечислить все методы для объекта в Ruby?
- 5. Операторы Ruby как методы?
- 6. Глобальные методы в Ruby
- 7. Просмотреть доступные методы ruby
- 8. Rails: Как проверить делегированные методы?
- 9. Методы Singleton в ruby
- 10. методы именования как методы вызова переменных Ruby
- 11. Как проверить методы @future
- 12. Как проверить непубличные методы?
- 13. Как проверить родительские методы?
- 14. Как обеспечить методы класса/объекта в блоке в Ruby?
- 15. получить все методы класса-объекта-объекта-объекта?
- 16. Ruby: Как цеплять методы класса
- 17. Как связать методы в Ruby?
- 18. Как кэшировать методы в ruby?
- 19. как тестировать методы объекта (упражнение)
- 20. Как проверить, нет ли объекта в представлении Ruby?
- 21. Ruby Инициализировать и построить методы для объекта с использованием JSON
- 22. Методы настройки Ruby
- 23. Ruby - Хэш методы рекурсивно
- 24. Методы времени в Ruby
- 25. Методы класса (ruby)
- 26. Магические методы в Ruby?
- 27. Ruby, запустите все методы
- 28. Методы класса в Ruby
- 29. Datamapper, определяющий ваши собственные методы объекта, как?
- 30. Можно ли удалить методы издевательства с объекта FlexMock в Ruby?
Вы имеете в виду 'parent = obj.class.superclass', правильно? – sepp2k
'what.methods' возвращает' Array' в версию Ruby, которую я запускаю. То же самое с 'whatever.public_methods'. – cHao
@ sepp2k - да, спасибо - исправлено! – sethvargo