55502f40dc8b7c769880b10874abc9d0

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 ?

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 !

F9ac05fdd57915983ccea58699e1f942

mvanholstyn

August 1, 2008, August 01, 2008 04:17, permalink

3 ratings. Login to rate!
rows_in_order = side == :white ? (0..7) : (0..7).to_a.reverse
3f7fc5fbdbb40cf38d5bf94f265b343c

Andrew Skegg

August 1, 2008, August 01, 2008 05:00, permalink

2 ratings. Login to rate!
rows_in_order = [1,2,3,4,5,6,7]
side == :white ? rows_in_order : rows_in_order.reverse
861f311cc4a077c439099d0e5d251e73

Wolfbyte

August 1, 2008, August 01, 2008 05:18, permalink

No rating. Login to rate!

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]
Aedd89a10aba3a46576ea4f604146c65

badcarl

August 1, 2008, August 01, 2008 05:48, permalink

2 ratings. Login to rate!
rows_in_order = (0..7).to_a
rows_in_order.reverse! unless side == :white
C742e66fc7df5992e587a3179f83067d

clonecd875

May 9, 2011, May 09, 2011 00:30, permalink

No rating. Login to rate!

Give never the wolf the wether to keep.

Your refactoring





Format Copy from initial code

or Cancel