2009-12-14 7 views
11

Wie kann ich alle verfügbaren Methoden für ein Objekt in Ruby anzeigen? Ich benutze die aptana IDE, wenn ich File eintippe. Es werden keine Methoden angezeigt. Ich komme aus einem Eclipse/Java-Hintergrund.Verfügbare Methoden anzeigen Ruby

Dank

Antwort

2

Sie File.methods im interaktiven Ruby-Interpreter aufrufen können alle verfügbaren Methoden zu sehen. Ich bin mir nicht sicher, ob es einen Weg in der IDE gibt, den du benutzt, da ich es vorher noch nicht benutzt habe.

23

Es gibt mehrere Methoden:

obj.methods 
obj.public_methods 
obj.private_methods 
obj.protected_methods 
obj.singleton_methods 

aktualisieren

  1. Um die Objektmethoden abgesehen von allen geerbten Methoden erhalten Sie tun können:

    obj.methods (false)

  2. Als Tempus erwähnte in den Kommentaren, der folgende Befehl sehr hilfreich ist es, die aktuellen Objektmethoden abgesehen von der Object (Basisklasse) geerbte Methoden zu erhalten:

    obj.methods - Object.methods

+5

Ich finde 'obj.methods - Object.methods' nützlich. – Geo

+1

Ich habe gerade 'puts obj.methods' herausgefunden, um sie in separaten Zeilen aufzulisten. – ZMorek

+0

Erarbeiten von Tempus's Punkt, es ist schön, wenn Sie ein Objekt von Drittanbietern verwenden (von einem Juwel oder etwas) und Sie tun obj_instance.methods - obj_instance .class.methods', um herauszufinden, wie diese Instanz auf – Edmund

3

Wenn Sie Ein laufender Ruby-Interpreter, <object>.methods, zeigt die verfügbaren Methoden für das Objekt an. In Eclipse, als ich File. eintippte, passierte nichts, bis ich einen Inhalt Hilfsbefehl (STRG + Leerzeichen) tat. An diesem Punkt bekam ich eine Liste von Methoden.

+0

reagiert. Danke. Der Ctrl-Bereich funktioniert für mich. Leider scheint keine Dokumentation mit den Methoden verbunden zu sein? Alles, was ich sehe, sind ihre Namen und Parameter, die man weitergeben muss. Ist das eine Schwäche der Ruby IDE? – user231413

+0

Ich bekomme eine Dokumentation über die Kernel-Methoden. Es kann damit zusammenhängen, dass Ruby Docs vorhanden ist oder nicht –

4

Sie können true an die Methoden übergeben, wenn Sie die Methoden in Oberklassen definiert ignorieren wollen:

obj.methods(true) 
obj.public_methods(true) 
obj.private_methods(true) 
obj.protected_methods(true) 
obj.singleton_methods(true) 

Oder, wenn Sie nur die am häufigsten verwendeten Methoden entfernen möchten, die in der Object Klasse definiert sind, können Sie möchte entweder - Object.methods oder - Object.instance_methods anhängen, abhängig davon, ob obj eine Klasse oder eine Instanz einer Klasse ist.

3

Ich würde auch beachten, dass obj.methods die Methodennamen nicht sortiert zurückgibt, so dass Sie möchten, obj.methods.sort zu tun.