我是ruby的新手但是我使用RVM安装了各种版本的Ruby, 这是我的LOAD_PATH
的输出ruby-1.9.2-p136 :001 > puts $LOAD_PATH
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/i686-linux
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/i686-linux
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/i686-linux
确定。所以这里的问题是,在这些目录中我可以看到像Array或Time这样的类的源代码吗? (我知道,这是一个非常难以理解的问题,但我需要知道。)
我需要长时间看一下Array的来源。
提前致谢!
PS。如果我想成为一名更好的红宝石程序员,你建议看哪一堂课?
答案 0 :(得分:5)
到目前为止我发现的最酷的代码浏览小工具是pry
:
http://pry.github.com/
这是irb
替代品,有很多好东西。一个示例会话,以便您可以看到如何使用它来浏览代码(您还将看到它可以显示类的C实现):
> pry
pry(main)> show-
show-command show-doc show-input show-method show-source
pry(main)> show-source Array
From: object.c in Ruby Core (C Method):
Number of lines: 6
static VALUE
rb_f_array(obj, arg)
VALUE obj, arg;
{
return rb_Array(arg);
}
pry(main)> cd Array
pry(Array):1> show-source each
From: array.c in Ruby Core (C Method):
Number of lines: 12
VALUE
rb_ary_each(ary)
VALUE ary;
{
long i;
RETURN_ENUMERATOR(ary, 0, 0);
for (i=0; i<RARRAY(ary)->len; i++) {
rb_yield(RARRAY(ary)->ptr[i]);
}
return ary;
}
pry(Array):1>
Pry当然也可以列出Ruby的类源。
浏览Ruby的C源代码的另一个有用工具是Ruby代码交叉引用:
http://rxr.whitequark.org/
但是现在它似乎已经停止了,但希望它很快会再次上升。
答案 1 :(得分:0)
出于性能原因,数组部分在C中实现,因此对于Array,您需要下载Ruby源代码。