2009-12-14 28 views
11

¿Cómo puedo ver todos los métodos disponibles en un objeto en rubí. Estoy usando el aptana IDE cuando escribo File. no se muestran métodos Vengo de un eclipse/fondo de java.métodos disponibles rubí

Gracias

Respuesta

2

Puede invocar File.methods en el intérprete de Ruby interactivo para ver todos los métodos disponibles. No estoy seguro de si hay una manera en el IDE que está utilizando, ya que no lo he usado antes.

23

Existen varios métodos:

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

Actualizar

  1. Para obtener aparte los métodos de objeto de todos los métodos heredados que puede hacer:

    obj.methods (falso)

  2. Como Tempus menciona en los comentarios, el siguiente comando es muy útil para obtener los métodos actuales del objeto aparte del objeto (clase base) heredó métodos:

    obj.methods - Object.methods

+5

me parece 'obj.methods - Object.methods' útil. – Geo

+1

acabo descubierto 'pone obj.methods' enumerarlos en líneas separadas – ZMorek

+0

Abundando en el punto de Tempus, es bueno si usted está utilizando un objeto tercero (de una joya o algo así) y lo hace' obj_instance.methods - obj_instance .class.methods' para averiguar qué responde esa instancia a – Edmund

3

Si usted tiene un intérprete de Ruby ejecutándose, <object>.methods mostrará los métodos disponibles en el objeto. En Eclipse, cuando he escrito File. no pasó nada hasta que hice un contenido Assist comando (Ctrl + Espacio). En ese momento obtuve una lista de métodos.

+0

Gracias. El espacio Ctrl funciona para mí. Desafortunadamente, no parece haber ninguna documentación asociada con los métodos? Todo lo que veo son sus nombres y parámetros para aprobar. ¿Es esto una debilidad del rubí IDE? – user231413

+0

Recibo documentación sobre los métodos de Kernal. Puede estar relacionado con la presencia de documentos de ruby ​​o no –

4

Puede pasar true a los métodos si desea ignorar los métodos definidos en superclases:

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

O, si sólo desea eliminar los métodos más comunes que se definen en la clase Object, se desee añadir ya sea - Object.methods- Object.instance_methods o, dependiendo de si obj es una clase o una instancia de una clase.

3

También me gustaría señalar que obj.methods no devuelve los nombres de los métodos ordenados, lo que podría querer hacer obj.methods.sort.

Cuestiones relacionadas