エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
Fenrir's BLog: Rubyでディープコピー
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Fenrir's BLog: Rubyでディープコピー
こんなことができるのもRubyのシリアライザMarshalが非常に優れていて、ほぼ全てのオブジェクトに対応し... こんなことができるのもRubyのシリアライザMarshalが非常に優れていて、ほぼ全てのオブジェクトに対応しているからですが、対応し過ぎているために時に思った動作をしないことがあります。例えばディープコピー対象のオブジェクトにシングルトンオブジェクトが含まれていたらどうなると思いますか?当然といえば当然ですが、これらについてもディープコピーが取られてしまい、シングルトン性が破壊されます。 そういうときはMarshalの内部的な動作を規定するためのメソッド、_dumpと_loadをオーバーライドすればよいみたいです(Ver 1.8ではmarshal_dumpとmarshal_load)。コードの例は続きをどうぞ。 class Singleton def initialize @a = 1 @b = 2 end @@obj = Singleton::new def Singleton::get