2016-07-08 13 views
0

Was ist besser und richtiger Weg, es in Rubin zu schreiben? Ich muss etwas wie eine Matrix erstellen. Voll Code ist hier: http://paste.ofcode.org/dgFrYpuAsv8f77r36pdvXPWie schreibe ich es besser?

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

Es scheint eine schlechte Idee zu sein, diese Bereiche zunächst fest codiert zu halten. IMO gehören sie entweder zu einer Konfigurationsdatei oder zu einem Datenspeicher. –

+0

Ja, ich verstehe, hier ist es für das Zeigen der Sache. – Costa

Antwort

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 

Aber, wie ich im Kommentar sagte, würde ich an anderer Stelle diese Karte setzen.