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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ruby中,有没有办法在控制台中知道方法的作用?相关的知识,希望对你有一定的参考价值。

在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并且我想知道它做了什么,它返回的是什么呢?

如果是,phpjavascript有类似的东西在控制台中看到方法定义吗?它看起来不像我遇到过它。

答案

您可以使用

help 'String#display'

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

另一答案

如果你使用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;
}

以上是关于在ruby中,有没有办法在控制台中知道方法的作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby on Rails 的控制台中调用控制器/视图辅助方法?

有没有办法在 Ruby 中读取不同的文件类型? [关闭]

有没有办法在 mp4 中使用 ruby​​ on rails / web / html5 录制音频

JUnit get() 方法在 Spring Boot 中不起作用

有没有办法使用内存分配报告来分析 ruby​​ 1.9.2 脚本?

有没有办法从 Ruby 中的实例调用私有类方法?