昨天有人问起 splat 运算符,我想看看源代码……那是用 C 写的还是用 Ruby 写的?它会在哪里找到?
问问题
539 次
2 回答
7
一些快速的谷歌搜索发现它是在eval.c中实现的。您可以在文件中的几个位置找到对“splat”的引用,但我对 Ruby 的内部工作原理不够熟悉,无法理解它。
于 2009-05-28T15:30:58.397 回答
2
从 Ruby 2.4 开始,splat 运算符在核心 Ruby 文档中的记录很差。不过,它是该语言的核心功能,splat 运算符的源代码可以vm_eval.c
在rb_yield_splat(VALUE values)
.
的单元测试使rb_yield_splat
正在发生的事情更清楚:
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
于 2017-08-02T01:57:14.297 回答