私はRubyが比較的新しいですが、後で使うために変数をキャッチしようとしています。Rubyで後で使うために変数をキャッチ
例:私は、xバックの元の値を取得するにはどうすればよい
x = [1,2,3]
y = x
y.reverse!
?私はyを変更したときにxが変わったようです。基本的には、変数の値をキャッチして保持する必要があります。 多くの感謝! AlanR
私はRubyが比較的新しいですが、後で使うために変数をキャッチしようとしています。Rubyで後で使うために変数をキャッチ
例:私は、xバックの元の値を取得するにはどうすればよい
x = [1,2,3]
y = x
y.reverse!
?私はyを変更したときにxが変わったようです。基本的には、変数の値をキャッチして保持する必要があります。 多くの感謝! AlanR
xのクローンを作成するには、.dup
を使用する必要があります。
x = [1,2,3]
y = x.dup
y
「変異している!メソッドは、同等の非変異型と対になる。 (そのようなペアが存在する場合は一般的に、非変異形は、名前の末尾に!
が欠如している。)
をこの場合には、すべてのケースで特にを正当化する十分な理由がない限り、私は使用をお勧めします非変異型。私は、副作用を減らすことでコードがより洗練され、このような微妙な問題も少なくなることがわかりました。 (gsub!
は特に不快であることができる。)ハッピーコーディング
>> x = [1,2,3]
=> [1, 2, 3]
>> y = x
=> [1, 2, 3]
>> y = y.reverse
=> [3, 2, 1]
>> x
=> [1, 2, 3]
。
私はpstに同意しますが、機能的な表現を使用して新しいバージョンや変更されたバージョンを作成するのではなく、元のオブジェクトを変更するのは悪いスタイルです。
y = x.reverse # problem solved
あなたは*本当に*それをDUPする必要がありますか?私はあなたのプログラムのより大きな文脈を知らないが、変数をdupする必要はほとんどない。式とメソッドの戻り値を賢明に使用すると、中間変数の作成があまりにも多くなることはありません。 –
キャッシュしているのではなく、キャッチしていませんか? –