在ruby中,有没有办法在控制台中知道方法的作用?

时间:2018-02-28 16:02:06

标签: ruby class methods console

在Ruby中,如果我正在寻找类的方法。 即:String.methods.sort 我有以下内容:

[:!, :!=, :!~, :<, :<=, :<=>, :==, :===, :=~, :>, :>=, :__id__,
:__send__, :allocate, :ancestors, :autoload, :autoload?, :class,
:class_eval, :class_exec, :class_variable_defined?,
:class_variable_get, :class_variable_set, :class_variables, :clone,
:const_defined?, :const_get, :const_missing, :const_set, :constants,
:define_singleton_method, :deprecate_constant, :display, :dup,
:enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :hash, 
:include, :include?, :included_modules, :inspect, :instance_eval,...]

我有办法在控制台中输入命令来探索方法吗?如果我不熟悉:display并且我想知道它的作用,它返回的是什么呢?

如果是,PHP和javascript是否有类似的东西在控制台中查看方法定义?它看起来并不像我遇到过的那样。

2 个答案:

答案 0 :(得分:4)

您可以使用

help 'String#display'

它将显示该方法的rdoc(与在irb之外运行ri 'String#display'时显示的输出相同。您也可以只将help输入到irb中,它将进入模式,你可以继续键入方法名称,它将显示rdoc(输入一个空行退出)。

答案 1 :(得分:2)

如果您使用Pry,则会有一个方便的快捷方式show-source

[1] pry(main)> show-source String.display

From: io.c (C Method):
Owner: Kernel
Visibility: public
Number of lines: 15

static VALUE
rb_obj_display(int argc, VALUE *argv, VALUE self)
{
    VALUE out;

    if (argc == 0) {
        out = rb_stdout;
    }
    else {
        rb_scan_args(argc, argv, "01", &out);
    }
    rb_io_write(out, self);

    return Qnil;
}