Pergunta

Por exemplo, em Python, posso fazer coisas assim se quiser obter todos os atributos de um 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']

Ou se eu quiser ver a documentação de algo, posso usar a função de ajuda:

>>> help(str)

Existe alguma maneira de fazer coisas semelhantes em Ruby?

Foi útil?

Solução

Claro, é ainda mais simples do que em Python.Dependendo das informações que você procura, tente:

obj.methods

e se você quiser apenas os métodos definidos para obj (em vez de obter métodos Object também)

obj.methods - Object.methods

Também interessante é fazer coisas como:

obj.methods.grep /to_/

Para obter variáveis ​​de instância, faça o seguinte:

obj.instance_variables

e para variáveis ​​de classe:

obj.class_variables

Outras dicas

Se você deseja todos os métodos que você pode chamar de algo do que usar

>>> x.methods

Se você quiser algumas informações de ajuda, ligue para a ajuda antes de sua aula

>>> help x.class

A ajuda é um invólucro para o RI no IRB.

Se você tem um objeto e deseja saber quais métodos ele responde, você pode executar obj.methods (E todos os truques que Thenduks mencionou sobre esse resultado.)

Se você tem uma aula, você pode correr klass.methods Para ver quais métodos de classe estão disponíveis ou você pode executar klass.instance_methods Para saber quais métodos estão disponíveis nas instâncias dessa classe. klass.instance_methods(false) é útil, porque ele informa quais métodos foram definidos pela classe e não herdados.

Agora, há uma maneira de obter o texto de ajuda para um método dentro de Ruby da maneira que Python faz.

Há um módulo chamado ObjectSpace que é incluído em cada objeto criado em Ruby. Ele mantém todos os métodos que ajudam a introduzir o contexto atual do processo. Em IRB você começa em Object:Main contexto que é o contexto de nível superior para a sessão atual do IRB. Então você poderia fazer algo como time = Time.now e então faça irb time o que o levaria ao contexto desse objeto e você poderia inspecioná -lo por dentro sem ligar ObjectSpace métodos nesse objeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top