Ruby的每个方法由什么组成?

Ruby的每个方法由什么组成?,ruby,Ruby,新ruby开发者在哪里可以找到RubyEach方法的内部代码?或者任何ruby方法 对于每一个,我猜它都使用了“for循环”,但我想研究一下。您可以在Github上浏览Ruby源代码:。对于Array#each方法,请查看Array.c。在文件的底部,您可以看到方法名映射到C函数。您可以看到each方法映射到rb\u ary\u each(): 然后可以向上滚动以查找其实现: VALUE rb_ary_each(VALUE array) { long i; volatile VA

新ruby开发者在哪里可以找到RubyEach方法的内部代码?或者任何ruby方法


对于每一个,我猜它都使用了“for循环”,但我想研究一下。

您可以在Github上浏览Ruby源代码:。对于
Array#each
方法,请查看
Array.c
。在文件的底部,您可以看到方法名映射到C函数。您可以看到
each
方法映射到
rb\u ary\u each()

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

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;
}
值
rb_ary_每个(值数组)
{
龙我;
易变值=数组;
返回大小为的枚举数(ary,0,0,ary,enum,length);

对于(i=0;iruby-doc.org最酷的一点是,您可以将鼠标悬停在一个方法的文档上,您将看到一条“单击以切换源代码”消息出现在右上角,并带有一个放大镜图标。单击的效果与广告中的一样。请查看。

查看源代码。
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;
}