Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

ActiveSupport | Object#deep_dup

概要

Object#deep_dup

詳細

Object#deep_dupについて

Object#deep_dup

Rubyの標準コピーのdupメソッドはシャローコピーになっている。
deep_dupはディープコピーの機能を提供する。

サンプル

# encoding: utf-8
require "active_support/core_ext/object/deep_dup"

def copy(method_name)
  hoges = %w{hoge hige hege}

  copy_hoges = hoges.method(method_name).call
  p hoges
  copy_hoges.first.upcase!
  p hoges
  p copy_hoges
end

copy(:dup)
puts "-------------------------"
copy(:deep_dup)

出力

["hoge", "hige", "hege"]
["HOGE", "hige", "hege"]
["HOGE", "hige", "hege"]
-------------------------
["hoge", "hige", "hege"]
["hoge", "hige", "hege"]
["HOGE", "hige", "hege"]