Pregunta

Por ejemplo, en Python, que puede hacer cosas como esto si quiero conseguir todos los atributos de un objeto:

>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']

O si quiero ver la documentación de algo, puedo usar la función de ayuda:

>>> help(str)

¿Hay alguna manera de hacer cosas similares en Ruby?

¿Fue útil?

Solución

Claro, es aún más simple que en Python. En función de la información que está buscando, intente:

obj.methods

y si quieres sólo los métodos definidos para obj (en lugar de conseguir métodos en Object también)

obj.methods - Object.methods

También es interesante es hacer cosas como:

obj.methods.grep /to_/

Para obtener las variables de instancia, haga lo siguiente:

obj.instance_variables

y de las variables de clase:

obj.class_variables

Otros consejos

Si desea que todos los métodos que se pueden llamar en algo de uso

>>> x.methods

Si quieres algo de información de ayuda a continuación, llamar ayuda antes de su clase

>>> help x.class

Ayuda es un contenedor de RI dentro del IRB.

Si usted tiene un objeto, y desea saber qué métodos que responde a, puede ejecutar obj.methods (y todos los trucos que thenduks ha mencionado en este resultado.)

Si usted tiene una clase, puede ejecutar klass.methods para ver qué métodos de clase son availabe, o puede ejecutar klass.instance_methods saber qué métodos están disponibles en instancias de esa clase. klass.instance_methods(false) es útil, becuase que te dice qué métodos se define por la clase y no se hereda.

Ahora hay manera de conseguir texto de ayuda de un método dentro de Ruby la forma de pitón hace.

Hay un módulo llamado ObjectSpace que se incluye en cada objeto creado en rubí. Lleva a cabo todos los métodos que le ayudan a la introspección contexto actual del proceso. En IRB comenzar en el contexto Object:Main contexto que es de primer nivel para la sesión actual IRB. Posteriormente, se podría hacer algo como time = Time.now y luego hacer irb time que tendría en el contexto de ese objeto y que puede inspeccionar desde el interior sin llamar a métodos ObjectSpace en ese objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top