rows_in_order = []
if side==:white
0.upto(7){ |i| rows_in_order << i }
else
7.downto(0){ |i| rows_in_order << i }
end
Refactorings
No refactoring yet !
mvanholstyn
August 1, 2008, August 01, 2008 04:17, permalink
rows_in_order = side == :white ? (0..7) : (0..7).to_a.reverse
Andrew Skegg
August 1, 2008, August 01, 2008 05:00, permalink
rows_in_order = [1,2,3,4,5,6,7] side == :white ? rows_in_order : rows_in_order.reverse
Wolfbyte
August 1, 2008, August 01, 2008 05:18, permalink
To make it easier to extend or do repetitively.
P.S. I included a definition for tap because it's from ruby 1.9 [http://eigenclass.org/hiki.rb?Changes-in-Ruby-1.9-update-6] and I'm running 1.8.6 still. You don't need it but it's really cool!
class Object
def tap
yield self if block_given?
self
end
end
white_vals = (0..7).to_a
rows = Hash.new( white_vals.reverse ).tap { |h| h[:white] = white_vals }
puts rows[:black]
puts rows[:white]
puts rows[:purple]
I wanted to do rows_in_order = (side==:white) ? (0..7) : (7..0) but it would not let me do a descending range. Anyone got a concise version of this ?