Tbpgr Blog

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

書籍 Ruby Cookbook | オブジェクトの凍結

パンくず

Ruby Cookbook
オブジェクトの凍結

概要

オブジェクトの凍結

内容

freezeメソッドによって、オブジェクトを凍結できます。
破壊的な操作を防ぐことはできますが、参照自体を置き換えることを防げません。

サンプルコード

# encoding: Windows-31J
require "pp"

class Hoge
  attr_accessor :name,:age
  
  def initialize(name,age)
    @name,@age = name,age
  end
end

hoge = Hoge.new("hoge",10)
pp hoge

puts "hoge.frozen?=#{hoge.frozen?}"
hoge.freeze
puts "hoge.frozen?=#{hoge.frozen?}"
begin 
  hoge.age = 9
rescue => e
  puts e
end

hoge.name.gsub!("o","a")
pp hoge

出力

#<Hoge:0x2aa5b28 @age=10, @name="hoge">
hoge.frozen?=false
hoge.frozen?=true
can't modify frozen Hoge
#<Hoge:0x2aa5b28 @age=10, @name="hage">