From: Steven Arnold Date: 2009-12-06T02:14:58+09:00 Subject: different output for same expression? Forgive me if this is an elementary question and I am missing something obvious, but there is a behavior in Ruby that puzzles me a lot. I don't see why the two blocks below do not produce the same output. One displays the numerically sorted array and the other does not. # Block 1 myarray = ["210", "22"] myarray = myarray.sort do |a,b| a.to_i <=> b.to_i end puts myarray # Block 2 myarray = ["210", "22"] puts myarray.sort do |a,b| a.to_i <=> b.to_i end In one case, I reassign myarray to the return value of the sort method for myarray and then print myarray. In the other case, I just directly print the return value of the sort method. Shouldn't the return value be the same in both cases, and therefore the output also the same? Here is the same thing in the irb interface: irb(main):001:0> myarray = ["210", "22"] => ["210", "22"] irb(main):002:0> myarray = myarray.sort do |a,b| irb(main):003:1* a.to_i <=> b.to_i irb(main):004:1> end => ["22", "210"] irb(main):005:0> puts myarray 22 210 => nil irb(main):006:0> myarray = ["210", "22"] => ["210", "22"] irb(main):007:0> puts myarray.sort do |a,b| irb(main):008:1* a.to_i <=> b.to_i irb(main):009:1> end 210 22 => nil steven