Ruby,Splat的源代码?

时间:2009-05-28 15:16:15

标签: ruby splat

有人昨天询问了splat运算符,我想看看源代码......是用C还是用Ruby编写的?它会在哪里找到?

2 个答案:

答案 0 :(得分:7)

一些快速谷歌搜索发现它已在eval.c中实现。你可以在文件的几个地方找到对“splat”的引用,但是我对Ruby的内部工作方式不够熟悉,无法理解它。

答案 1 :(得分:2)

从Ruby 2.4开始,splat运算符在核心Ruby文档中的记录很少。它是该语言的核心功能,而splat运算符的源代码可以在AWS Command-Line Interface (CLI)下的vm_eval.c中找到。

rb_yield_splat的{​​{3}}可让您更清楚地了解所发生的事情:

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