Ruby で freeze メソッドを使用する

Hassan Ejaz 2024年2月15日
Ruby で freeze メソッドを使用する

この記事では、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

出力:

Ruby のフリーズメソッド

上記の例では、オブジェクトが freeze メソッドによって既にフリーズされているときにオブジェクトを変更しようとしたため、エラーが発生しました。

Ruby の freeze メソッドの制限

freeze メソッドにはいくつかの制限があります。フリーズされたオブジェクトに関連する変数を変更できることを理解することが重要です。

これは、このメソッドを使用してオブジェクトをフリーズしただけだからです。これらのオブジェクトに関連する変数は自由に変更できます。

これは、同じ変数にアクセスして、フリーズしたオブジェクトを新しいものに変更する方法を示す例です。

# Ruby

str = "Hey James"
str.freeze

str = "Hey Petr"

puts str

出力:

Ruby のフリーズメソッドの制限

freeze メソッドを使用して、オブジェクトが不変であるかどうかを確認できます。

# Ruby

str2 = "Hey Julia"

str2.freeze

str4 = "Julia is very nice"

num = 120.5

num.freeze

関連記事 - Ruby Method