2009-12-14 14 views

risposta

2

è possibile richiamare File.methods nell'interprete interattivo Ruby per vedere tutti i metodi disponibili. Non sono sicuro che ci sia un modo nell'IDE che stai utilizzando, poiché non l'ho mai usato prima.

23

Sono disponibili diversi metodi:

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

Aggiornamento

  1. Per ottenere i metodi dell'oggetto Oltre a tutti i metodi ereditati che si possono fare:

    obj.methods (false)

  2. Come Tempus citato nei commenti, il seguente comando è molto utile per ottenere i metodi dell'oggetto corrente a parte l'oggetto (classe di base) ha ereditato metodi:

    obj.methods - Object.methods

+5

Trovo utile 'obj.methods - Object.methods'. – Geo

+1

Ho appena trovato 'puts obj.methods' per elencarli su linee separate – ZMorek

+0

che elaborano sul punto di Tempus, è bello se stai usando un oggetto di terze parti (da una gemma o qualcosa del genere) e fai' obj_instance.methods - obj_instance .class.methods' per scoprire cosa risponde l'istanza a – Edmund

3

Se avete un interprete Ruby in esecuzione, <object>.methods mostrerà i metodi disponibili sull'oggetto. In Eclipse quando ho digitato File. non è successo nulla fino a quando non ho fatto un comando di Assistente contenuto (CTRL + spazio). A quel punto ho ricevuto una lista di metodi.

+0

Grazie. Ctrl space funziona per me. Sfortunatamente non sembra esserci alcuna documentazione associata ai metodi? Tutto quello che vedo sono i loro nomi e parametri da passare. È una debolezza dell'ID rubino? – user231413

+0

Ricevo documentazione sui metodi di Kernal. Potrebbe essere correlato alla presenza o meno di documenti ruby –

4

È possibile passare true ai metodi, se si vuole ignorare i metodi definiti in superclassi:

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

Oppure, se si desidera rimuovere i metodi più comuni che vengono definite nella classe Object, è desidera aggiungere - Object.methods o - Object.instance_methods, a seconda che sia obj una classe o un'istanza di una classe.

3

Vorrei anche notare che obj.methods non restituisce i nomi dei metodi ordinati, quindi potresti voler fare obj.methods.sort.

Problemi correlati