2015-12-16 26 views
0

考慮創建一個哈希表:如何使用哈希表中有多個按鍵

a_Min a_Max b_Min b_Max p1 p2 p3  p4  p5  p6 
40.000 47.95 -95.0 -74.01 12.8 6.5 177.82 0.9150 68.62 0.9020 
42.000 47.95 -68.0 -59.50 11.0 5.8 185.20 0.9377 -11.80 0.9538 
44.000 47.95 -74.2 -68.05 12.8 6.5 157.45 0.9194 37.55 0.9297 
46.000 66.00 -59.5 -51.00 8.8 3.7 164.96 0.9465 -207.54 1.0342 
47.951 66.00 -79.0 -59.55 12.8 6.5 157.45 0.9194 37.55 0.9297 
47.951 66.00 -95.0 -79.01 12.8 6.5 177.82 0.9150 68.62 0.9020 
... 

如果給予任何(a,b),就會掉下四個邊界控制值內的哈希表(a_Min, a_Max, b_min, b_Max)並返回其相關參數(p1, p2, p3....)

我想是這樣的:

def functionXXX(a, b) 
    threshold = XXX 
    for t in threshold do 
     if (t[:a_Min]<=a && a<t[:a_Max] && t[:b_Min]<=b && b<t[:b_Max]) then 
      return t 
      break 
     end 
    end 
end 

這是做這個任務的正確方法是什麼?

+0

你能給出更多的線索嗎?我的意思是這些行之間的關係是什麼? – marmeladze

+0

歡迎使用堆棧溢出。請閱讀「[問]」和「[mcve]」。因爲我們不能重複任何問題,因爲你的代碼和問題不會運行。 –

回答

0

這是一個比較文雅:

if (t[:a_Min]...t[:a_Max]).include? a && 
     (t[:b_Min]...t[:b_Max]).include? b 
    # ... 
end 

注意的三個點,如果要包括最後一個號碼,你會用..,但你已經在您的文章中使用<

將它們作爲範圍存儲在第一位將是一個更好的主意,因此每次調用該函數時都不必重新構建它們。

+0

太棒了!非常感謝!現在愛上紅寶石:) –

相關問題