Ruby で freeze メソッドを使用する
Hassan Ejaz
2024年2月15日
この記事では、Ruby のオブジェクトに freeze
メソッドを使用する方法を紹介します。
Ruby で freeze
メソッドを使用する
オブジェクトを変更したくない場合は、Ruby の freeze
メソッドを使用できます。オブジェクトを変更できないようにします。このメソッドを使用すると、不変オブジェクトをすばやく生成できます。
freeze
メソッドが適用されているオブジェクトを変更しようとすると、プログラムはエラーを表示します。配列で freeze
メソッドを使用する場合を以下に示します。
# Ruby
fruits = ["orange","banana","strawberry"]
fruits.freeze
fruits <<"watermelon"
このコードを実行しようとすると、エラーが発生します。文字列の場合、freeze
メソッドの使用法を以下に示します。
# Ruby
str = "Hey"
str.freeze
str <<" How are you?"
これにより、ランタイムエラーも表示されます。オブジェクトの場合、freeze
メソッドの使用法を以下に示します。
# Ruby
class Fruits
def initialize(name)
@name = name
end
def get_name
return @name
end
def set_name(name)
@name = name
end
end
a = Fruits.new("apple")
a.freeze
a.set_name("melon")
puts a.get_name
出力:
上記の例では、オブジェクトが freeze
メソッドによって既にフリーズされているときにオブジェクトを変更しようとしたため、エラーが発生しました。
Ruby の freeze
メソッドの制限
freeze
メソッドにはいくつかの制限があります。フリーズされたオブジェクトに関連する変数を変更できることを理解することが重要です。
これは、このメソッドを使用してオブジェクトをフリーズしただけだからです。これらのオブジェクトに関連する変数は自由に変更できます。
これは、同じ変数にアクセスして、フリーズしたオブジェクトを新しいものに変更する方法を示す例です。
# Ruby
str = "Hey James"
str.freeze
str = "Hey Petr"
puts str
出力:
freeze
メソッドを使用して、オブジェクトが不変であるかどうかを確認できます。
# Ruby
str2 = "Hey Julia"
str2.freeze
str4 = "Julia is very nice"
num = 120.5
num.freeze