Quel est un moyen simple de découvrir quelles méthodes/propriétés un objet Ruby expose?
Par exemple, pour obtenir des informations sur les membres d'une chaîne, dans PowerShell, vous pouvez faire
"" | get-member
En Python,
dir("")
Existe-t-il un moyen si simple de découvrir les informations sur les membres d'un objet Ruby?
Ruby n'a pas de propriétés. Chaque fois que vous souhaitez accéder à une variable d'instance dans un autre objet, vous devez utiliser une méthode pour y accéder.
Deux façons d'obtenir les méthodes d'un objet:
my_object.methods
MyObjectClass.instance_methods
Une chose que je fais pour élaguer la liste des méthodes héritées de la classe de base Object:
my_object.methods - Object.instance_methods
Pour répertorier les attributs d'un objet:
object.attributes
Utilisez ceci:
my_object.instance_variables
Il y a deux façons d'y parvenir:
obj.class.instance_methods(false)
, où 'false' signifie qu'il n'inclura pas les méthodes de la superclasse, donc par exemple ayant:
class Person
attr_accessor :name
def initialize(name)
@name = name
end
end
p1 = Person.new 'simon'
p1.class.instance_methods false # => [:name, :name=]
p1.send :name # => "simon"
l'autre est avec:
p1.instance_variables # => [:@name]
p1.instance_variable_get :@name # => "simon"
object.methods
renverra un tableau de méthodes dans l'objet