1

この質問がされた可能性は非常に高いですが、答えが見つかりません。

4 つの変数があります。

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

この行をより DRY にする (コンパクトに保つ​​)、つまり、変数名を繰り返さずに同じ変更を行うにはどうすればよいでしょうか?

4

2 に答える 2

2

個別の変数を作成せず、値を最初から配列またはハッシュに入れます。

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}
于 2013-02-14T22:19:36.253 に答える
0

短い答え(整数を使用したこの特定の例の場合)は「まさか」であるという疑いが高まっています。

私の前の質問の答えで説明されたのと同じ理由のために:

String#replaceのようにRubyで参照される整数値を置き換える

アップデート:

操作する変数が配列、ハッシュ、または文字列であり、実行された操作後も同じデータ型を維持する場合、より乾燥し、よりコンパクトになり、replaceを使用するためのメモリを節約できます。

[a,b,c,d].each{|v| v.replace(v + [1])} #example for an array
于 2013-02-15T05:23:31.507 に答える