Ruby的each方法包括什么?

3

新手 Ruby 程序员在哪里可以找到 Ruby each 方法的内部代码?或者任何 Ruby 方法的代码。

我猜测 each 方法使用了“for 循环”,但我想要学习它。


看源代码。 - SwiftMango
http://ruby-doc.org/core-2.0.0/Enumerator.html#method-i-each - sevenseacat
2个回答

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

ruby-doc.org的一个很酷的特性是,您可以将鼠标悬停在一个方法的文档上,然后您会看到一个“单击以切换源代码”消息出现在右上角,以及放大镜图标。 点击功能正常。 使用 Enumerator#each来检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接