2016-11-23 111 views
-4

我有一個散列,其鍵是一個整數範圍(可以說[1..5]),其相應的5個值都是nil。我也有一個整數數組(我可以說[1,2,3,4,5]。我想要做的是非常具體的:我想要把每一個鍵都加入到每個數組元素中,給我一個具有原始鍵的散列,但是目前已爲值整個轉移陣列。我可以在另一個紅寶石塊內有紅寶石塊嗎?

花了幾個小時,我的結論是,這是不可能通過一個非常簡潔的表達,因爲它是導致。每個陰影語句之後。

我認爲唯一的與此相關的方法是創建5個幾乎相同的方法並分別調用它們。

def a1 
    array.each do |x| 
    x+1 
    end 
end 

def a2 
    array.each do |x| 
    x+2 
    end 
end 

等..

最終產品我想實現的是:

{1=>[2,3,4,5,6],2=>[3,4,5,6,7],3=>[4,5,6,7,8],4=>[5,6,7,8,9],5=>[6,7,8,9,10]} 

感覺就像應該有實現這一更加乾燥方式。有任何想法嗎?

回答

2

假設這些初始條件:

h = {1=>nil, 2=>nil, 3=>nil, 4=>nil, 5=>nil} 
arr = [1,2,3,4,5] 

...這是非常簡單的:

h.keys.each do |key| 
    h[key] = arr.map {|i| i+key} 
end 
# h is now: {1=>[2, 3, 4, 5, 6], 2=>[3, 4, 5, 6, 7], 3=>[4, 5, 6, 7, 8], 4=>[5, 6, 7, 8, 9], 5=>[6, 7, 8, 9, 10]} 

(但是,您的問題可能是關於達到的初始條件。如果是這樣,我沒有把握,我也不擔心;我剛從開始,以爲起始條件,並以您期望的結果結束。)

+0

嘿,工作!但是你真的可以在另一個區塊內有一個區塊嗎?我昨天開始寫這篇文章,然後發佈在堆棧上,但我有一個關於影子語句的文本編輯器警告,並讓我驚慌失措。說實話,我有點驚訝downvote ..我看到更多的初學者問題堆棧溢出..無論如何,謝謝。 – alexandros84

+0

嘿,我不知道這一點! – alexandros84

0

你爲什麼不這樣做

h = {} 
rng.each{|i| h[i] = ary.map{|j| j + i}} 

這應該在哪裏工作rng是範圍和ary是數組。

例如

h = {} 
(1..5).each{|i| h[i] = [1,2,3,4,5].map{|j| j+i}} 

結果

h = {1=>[2, 3, 4, 5, 6], 2=>[3, 4, 5, 6, 7], 3=>[4, 5, 6, 7, 8], 4=>[5, 6, 7, 8, 9], 5=>[6, 7, 8, 9, 10]} 
+0

好的答案,但我在示例中給出的哈希值僅僅是一個示例!它們的結構就是爲了簡單起見而設計的。無論如何,謝謝你。 – alexandros84