###質問内容
http://qiita.com/sue738/items/92228f0ae0518bf0a693
によると、(インスタンスを参照にした変数)を参照した変数の挙動について、
b = a 、 b = a.dup, b = a.Marshal.load(Marhsal.dupm(a))
とやった場合ではその後に変数の参照先を変えた場合の挙動が変わるとありました。
b = a と他の2つは確かに異なるのですが、後者の2つの挙動は同じものでした。
URLの記事の説明と挙動が異なってしまっているのはなぜでしょうか。
dupが浅いコピーを行うのであれば、aとbの値は同じになると予想していたのですが、、
以下に私の試した内容を記載します。
###該当のソースコード
class TT attr_accessor :name def initialize(name) @name = name end end a = TT.new("taro") b = a.dup b.name = "jiro" p a.name p b.name c = Marshal.load(Marshal.dump(a)) c.name = "saburo" p a.name p c.name
出力結果
"taro"#これが"jiro"になると予想していました。 "jiro" #この2つは予想通りでした。 "taro" "saburo"
###使用している環境
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/04 08:07
2017/02/04 08:26
2017/02/04 10:16