昨天有人询问了splat操作符,我想看看源代码......是用C语言还是用Ruby编写的?它会在哪里找到?红宝石,Splat的源代码?
7
A
回答
1
从Ruby 2.4开始,核心Ruby文档中对splat操作符的记录很少。不过,这是该语言的核心功能,并且可以在vm_eval.c
的rb_yield_splat(VALUE values)
下找到splat运算符的源代码。
的unit test为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
7
一些快速的Google搜索出现了,它在eval.c中实施。你可以在文件的一些地方找到对“splat”的引用,但是我对Ruby的内部工作原理不够熟悉。
相关问题
- 1. 红宝石 - 宝石编辑源代码没有任何影响
- 2. 逃逸红宝石代码
- 3. 重构难看的红宝石代码
- 4. 里面的红宝石代码
- 5. 转换红宝石+ JavaScript代码的CoffeeScript
- 6. 红宝石工具浏览安装的宝石代码
- 7. 重构我的红宝石叽叽喳喳宝石代码
- 8. 红宝石源代码中的范围类?
- 9. 红宝石只是角色代码
- 10. 解释红宝石代码片段
- 11. 不明白几行红宝石代码
- 12. 红宝石一行代码,中断块
- 13. Rails红宝石代码里面xml
- 14. 问题if和else代码...红宝石
- 15. 优化代码红宝石轨
- 16. 声纳 - 编辑红宝石代码
- 17. 红宝石backtick'd代码退出136?
- 18. 帮助在红宝石代码
- 19. IDEA红宝石插件代码检查无法看到宝石
- 20. Twitter的红宝石宝石
- 21. 红宝石发送使用splat不按预期方式工作
- 22. 红宝石网页只显示源代码
- 23. 正确的代码流在附加的代码? (红宝石)
- 24. 红宝石短阵迭代
- 25. 红宝石:迭代计算
- 26. 红宝石.detect替代
- 27. 红宝石散列在红宝石
- 28. ASCII85 BASE64红宝石编码
- 29. Caeser密码红宝石
- 30. 红宝石1.9.2 Find.find编码
感谢的是,马丁。试图理解Ruby世界。所以基本上,如果它是ruby而不是rails,则源代码可能不在Ruby中,这很有意义。 – 2009-05-28 18:27:58
splat运算符是核心ruby语言的一部分,不是库函数。它可以用于定义#to_ary方法的任何对象,但是当用于将多个值收集到单个变量中时(如`a,* b = 1,2,3,4,5`),它将始终创建一个阵列。 – rampion 2009-05-28 19:05:57