昨天有人问起了splat操作符,我想看看源代码...那是用C还是用Ruby写的?在哪里可以找到它?
发布于 2017-08-02 09:57:14
从Ruby2.4开始,核心Ruby文档中对splat操作符的记录很少。不过,这是该语言的一个核心特性,splat操作符的源代码可以在rb_yield_splat(VALUE values)下的vm_eval.c中找到。
rb_yield_splat的unit test使正在发生的事情变得更加清晰:
it "yields with passed array's contents" do
ret = nil
@s.rb_yield_splat([1, 2]) { |x, y| ret = x + y }
ret.should == 3
end发布于 2009-05-28 15:30:58
一些快速的谷歌搜索结果表明它是在eval.c中实现的。您可以在文件中的一些地方找到对"splat“的引用,但我对Ruby的内部工作原理还不够熟悉,无法理解它。
https://stackoverflow.com/questions/921403
复制相似问题