From: Michael Edgar Date: 2011-03-04T02:46:20+09:00 Subject: Re: What is inject doing here? I'm pretty sure he's just trying to understand inject's behavior on ranges, not looking for refactoring advice. Also, on Ruby 1.9, Kernel#p returns its arguments. Michael Edgar adgar@carboni.ca http://carboni.ca/ On Mar 3, 2011, at 5:42 AM, Adam Prescott wrote: > On Thu, Mar 3, 2011 at 2:15 AM, Todd Benson wrote: > >> irb(main):002:0> (0..3).inject {|s, i| a = i%2 == 0 ? 1 : -1; p a} >> -1 >> 1 >> -1 >> => -1 >> > > Why is this done using inject? s is never used in the block, but since `p a` > returns nil, s would be nil in every iteration after the first one. > > (0..3).map { |n| n % 2 == 0 ? 1 : -1 }.each { |n| puts n } > > You could of course just use each by itself: > > (0..3).each do |n| > if n % 2 == 0 > puts 1 > else > puts -1 > end > end