Ruby で freeze メソッドを使用する
    
    
            Hassan Ejaz
    2024年2月15日
    
    Ruby
    Ruby Method
    
 
この記事では、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
        チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe