新rubyists哪里可以找到每个方法的ruby的内部代码?或者任何红宝石方法。
每一个我都猜测它正在使用'for loops',但我想研究它。
答案 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查看。