Ruby每个方法包含什么?

时间:2013-11-18 00:38:17

标签: ruby

新rubyists哪里可以找到每个方法的ruby的内部代码?或者任何红宝石方法。

每一个我都猜测它正在使用'for loops',但我想研究它。

2 个答案:

答案 0 :(得分:2)

您可以在Github上浏览Ruby源代码:https://github.com/ruby/ruby。对于Array#each方法,请查看array.c。在文件的底部,您可以看到映射到C函数的方法名称。您可以看到each方法已映射到rb_ary_each()

rb_define_method(rb_cArray, "each", rb_ary_each, 0);

然后您可以向上滚动以查找其实现:

VALUE
rb_ary_each(VALUE array)
{
    long i;
    volatile VALUE ary = array;

    RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
    for (i=0; i<RARRAY_LEN(ary); i++) {
        rb_yield(RARRAY_AREF(ary, i));
    }
    return ary;
}

答案 1 :(得分:1)

关于ruby-doc.org的一个很酷的事情是,你可以将鼠标悬停在方法的文档上,你会看到右上角出现“点击切换源”消息以及放大镜图标。单击按宣传方式工作。请使用Enumerator#each查看。