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

问题描述 投票:0回答:2

在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有类似的东西在控制台中看到方法定义吗?它看起来不像我遇到过它。

ruby class methods console
2个回答
4
投票

您可以使用

help 'String#display'

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


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;
}
© www.soinside.com 2019 - 2024. All rights reserved.