From: Joey Date: 2006-08-07T16:43:34+09:00 Subject: Re: inject does not inject last value ------=_Part_38195_4655188.1154936612090 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Its not a bug, its because thats what sum/prod are on the last iteration. sum=3D0 [1,2,3,4,5].inject{|sum,e| sum+e } Is: (sum=3D0)+1 (sum=3D1)+2 (sum=3D3)+3 (sum=3D6)+4 (sum=3D10)+5 If you did: sum=3D0 [1,2,3,4,5].inject{|sum,e| sum+=3De } Then sum would be 15, but thats not how inject should be used. Whats wrong with: sum =3D [1,2,3,4,5].inject{|sum,e| sum+e } ? j`ey http://www.eachmapinject.com On 8/7/06, Pe=F1a, Botp wrote: > > Hi All, > > inject is a powerful method in ruby. but the ff gives me surprise.. > > irb(main):001:0> sum=3D0 > =3D> 0 > irb(main):002:0> [1,2,3,4,5].inject{|sum,e| sum+e } > =3D> 15 > irb(main):003:0> sum > =3D> 10 > irb(main):004:0> > irb(main):006:0> RUBY_VERSION > =3D> "1.8.5" > irb(main):007:0> prod=3D1 > =3D> 1 > irb(main):008:0> [1,2,3,4,5].inject(1){|prod,e| prod*e } > =3D> 120 > irb(main):009:0> prod > =3D> 24 > > it seems that inject does not update accumulator (sum or prod in examples= ) > on last iteration. > > tested on windows and linux. > > kind regards > > ------=_Part_38195_4655188.1154936612090--