例如,在Python,我可以做这样的事情,如果我想获得一个对象的所有属性:

>>> 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']

或者,如果我想要查看的一些文件,我可以使用帮助功能:

>>> help(str)

时有什么办法可以做类似的事情在Ruby中?

有帮助吗?

解决方案

当然,这比在Python更简单。根据您正在寻找什么样的信息,请尝试:

obj.methods

和,如果你想只为OBJ定义(相对于得到的Object方法以及)方法

obj.methods - Object.methods

同样有趣的是做这样的东西:

obj.methods.grep /to_/

要获得实例变量,这样做:

obj.instance_variables

和为类变量:

obj.class_variables

其他提示

如果你希望所有的,你可以调用的东西比使用方法

>>> x.methods

如果你想那么一些帮助信息,请拨打其上课前帮助

>>> help x.class

帮助为IRB内里的包装。

如果你有一个对象,你想知道什么方法它回应,你可以运行obj.methods(和所有thenduks已经对这个结果中提到的招数。)

如果你有一个类,你可以运行klass.methods看什么类的方法是速效,也可以运行klass.instance_methods知道什么方法可以在该类的实例。 klass.instance_methods(false)是有用的,监守它会告诉你在类中定义什么方法,而不是继承的。

有现在的方式来获得帮助文本的方法是Ruby Python是这样做。

有一个名为ObjectSpace模块,其被包含到红宝石创建的每个对象。它拥有所有的方法,可帮助你自省过程的当前上下文。在IRB你这是当前IRB会议最高级别的上下文语境Object:Main开始。然后,你可以不喜欢time = Time.now然后做irb time这将带你到该对象的情况下,你可以从内部检查时不调用该对象上ObjectSpace方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top