パンくず
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">