【发布时间】:2011-06-27 13:23:39
【问题描述】:
我发现这段 Ruby 代码非常有趣
(1..4).inject(&:+)
好的,我知道inject做了什么,而且我知道这段代码基本上相当于
(1..4).inject(0) {|a,n| a + n}
但它究竟是如何工作的呢?
为什么&:+和写块{|a,n| a + n}是一样的?
为什么它不需要初始值?我可以接受初始值为 0,但 (1..4).inject(&:*) 也可以,初始值必须为 1...
【问题讨论】:
-
这实际上是两个完全独立的问题,其中第一个问题与 StackOverflow 上已经提出和回答的至少 11 个其他问题重复:StackOverflow.Com/q/99318StackOverflow.Com/q/1217088@987654323 @StackOverflow.Com/q/1961030StackOverflow.Com/q/2096975StackOverflow.Com/q/2211751StackOverflow.Com/q/2259775StackOverflow.Com/q/2388337StackOverflow.Com/q/2697024StackOverflow.Com/q/3888044StackOverflow.Com/q/4512587
标签: ruby