2016-07-08 2 views
0

Что лучше и правильно писать в рубине? Мне нужно создать нечто вроде матрицы. Полный код здесь: http://paste.ofcode.org/dgFrYpuAsv8f77r36pdvXPКак написать это лучше?

def suggest_by_area_and_price area_range, price_range 
    broker_level = case area_range 
         when 0..100 
          return case price_range 
             when 0..25000 
              :intern_broker 
             when 25001..Float::INFINITY 
              :junior_broker 
            end 
         when 101..200 
          return case price_range 
             when 0..18000 
              :intern_broker 
             when 18001..30000 
              :junior_broker 
             when 30000..Float::INFINITY 
              :broker 
            end 



         #.... 


         when 1500..Float::INFINITY 
          :senior_broker 
         else 
          :junior_broker 
        end 
end 
+0

Кажется, что плохая идея сохранить эти диапазоны жестко запрограммированными, для начала. IMO они принадлежат либо к некоторому файлу конфигурации, либо к некоторому хранилищу данных. –

+0

Да, я понимаю, вот его для показа вещи. – Costa

ответ

0
map = { 
    (1..5) => { 
    (100..200) => :foo, 
    (201..300) => :bar 
    }, 
    (6..10) => { 
    (100..200) => :baz, 
    (201..300) => :boo 
    } 
} 
map.find{|k,_| k === 3}.last.find{|k,_| k === 250}.last 
# => :bar 

Но, как я уже сказал в комментарии, я бы поставил эту карту в другом месте.

Смежные вопросы