2013-02-14 46 views
1

這個問題很有可能被問到,但我找不到答案。如何以同樣的方式處理多個變量?

我有四個變量:

a,b,c,d = [a,b,c,d].map{|myvar| myvar+1 } 

我怎樣才能讓這條線越幹(保持它緊湊),即實現無重複的變量名稱相同的變化?

+0

的快速方法寫這是:a,b,c,d = [1,2,3,4] .map(&:succ) – 2013-02-15 00:05:42

+0

你可能想評論我的帖子,我沒有看到它是如何與我的 – 2013-02-15 05:26:33

回答

0

我有一個不斷增長的懷疑短答案(用於與整數這個具體的例子)是「沒有辦法」

由於相同的理由,在回答中描述在我剛纔的問題:

replacing referenced Integer value in Ruby like String#replace does

upda TE:

如果我們在操作變量是一個數組,散列或字符串,並且他們保持相同的數據類型所執行的操作後,它的乾燥,更緊湊,節省內存使用替代

[a,b,c,d].each{|v| v.replace(v + [1])} #example for an array 
+0

中的代碼保持相似,而來自其他問題的答案與此問題無關。 – doesterr 2013-02-15 12:16:49

+0

這個問題是關於變量的。我一定會用地圖!而不用問一個問題,我是否有時間重寫所有的數組。提到的答案顯示替換不能用於整數。因此我不能寫例如[a,b,c,d] .each {| v | v.replace(V + 1)} – 2013-02-15 19:26:07

2

不要創建單獨的變量,請將值從一開始放在Array或Hash中。

data = [] 
data << 1 
data << 2 
data << 3 
data << 4 
data = data.map { |value| value + 1 } 
data.inspect # => [2, 3, 4, 5] 

data = {} 
data[:a] = 1 
data[:b] = 2 
data[:c] = 3 
data[:d] = 4 
data.each { |key, value| data[key] = value + 1} 
data.inspect # => {:a=>2, :b=>3, :c=>4, :d=>5} 
+2

或使用['map!'](http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-map-21)來避免重新分配。 – maerics 2013-02-14 23:03:21

+0

對!希望儘可能使其與代碼 – doesterr 2013-02-14 23:10:26