在 Ruby 中使用 freeze 方法

Hassan Ejaz 2022年5月26日
在 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 方法的侷限性

我們可以使用 freeze 方法來檢查物件是否不可變。

# Ruby

str2 = "Hey Julia"

str2.freeze

str4 = "Julia is very nice"

num = 120.5

num.freeze

相關文章 - Ruby Method