新手 Ruby 程序员在哪里可以找到 Ruby each 方法的内部代码?或者任何 Ruby 方法的代码。
我猜测 each 方法使用了“for 循环”,但我想要学习它。
新手 Ruby 程序员在哪里可以找到 Ruby each 方法的内部代码?或者任何 Ruby 方法的代码。
我猜测 each 方法使用了“for 循环”,但我想要学习它。
你可以在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;
}
ruby-doc.org的一个很酷的特性是,您可以将鼠标悬停在一个方法的文档上,然后您会看到一个“单击以切换源代码”消息出现在右上角,以及放大镜图标。 点击功能正常。 使用 Enumerator#each来检查。