From: GianFranco Bozzetti Date: 2010-08-04T19:22:59+09:00 Subject: Re: Remove the error Avoid expressions returning tre/false as if or nil as puts. Two possible solutions: 1- sum = array.inject(0) do |memo,item| item == 3 ? (memo) : (memo + item) end puts "Sum = #{sum}" 2- sum=0 puts "item sum" array.each { |item| item == 3 ? (sum):(sum += item); printf "%4d %6d\n",item,sum } puts "Sum = #{sum}" HTH gfb "Amir Ebrahimifard" wrote in message news:224ee235f7c68ed448aa8d66d540fbc8@ruby-forum.com... > Hi > Why these codes result error ? > > 1- > array = [*1..10] > sum = array.inject { |memo,item| memo+item if item !=3 } > > 2- > array = [*1..10] > sum = array.inject { |memo,item| puts memo+item } > -- > Posted via http://www.ruby-forum.com/. >