如何以相同的方式处理多个变量?

时间:2013-02-14 21:00:10

标签: ruby variables

这个问题极有可能被问到,但我找不到答案。

我有四个变量:

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

如何让这条线更干(保持紧凑),即在不重复变量名的情况下实现相同的变化?

2 个答案:

答案 0 :(得分: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}

答案 1 :(得分:0)

我越来越怀疑简短的回答(对于这个具有整数的具体例子)是“没办法”

由于我在上一个问题的答案中描述的相同原因:

replacing referenced Integer value in Ruby like String#replace does

更新

如果我们操作的变量是Array,Hash或String,并且它们在执行的操作后保持相同的数据类型,它更干燥,更紧凑并且节省内存以使用替换

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