From: ara.t.howard@... Date: 2007-02-02T22:30:50+09:00 Subject: Re: indexed array On Fri, 2 Feb 2007, Josselin wrote: > presently I am using : zl = 13-[2,5,10,15,25].index(last_city_km) when > last_city_km is one of these fixed values to get a zoom level, > > now, there is a change in customer requirement, last_city_km is calculated, > so last_city_km can be an integer value between 0 and 25, and I would like > to calculate (DRY) the zoom level such as : > > last_city_km can be 0 > > if last_city_km <= 2 then zl = 13 > if 2 < last_city_km <= 5 then zl = 12 > if 5 < last_city_km <= 10 then zl = 12 > if 10 < last_city_km <= 15 then zl = 12 > if 15 < last_city_km <= 25 then zl = 12 > > if 25 < last_city_km.... cannot ! > > thanks for if you think you might end up adding even more logic you might consider something like: harp: ~> cat a.rb require 'yaml' [2, 5, 10, 15, 25].each do |last_city_km| base = 13 zl = base - case last_city_km when 0 .. 2; 0 when 2 .. 5; 1 when 5 .. 10; 2 when 10 .. 15; 3 when 15 .. 25; 4 else; raise RangeError, last_city_km.inspect end y last_city_km => zl end harp: ~> ruby a.rb 2: 13 5: 12 10: 11 15: 10 25: 9 regards. -a -- we can deny everything, except that we have the possibility of being better. simply reflect on that. - the dalai lama