3
A
回答
5
記憶正在保存長時間執行的結果,以便在再次調用時不再重複。
爲memoization的一個例子:
class A
def initialize
end
def do_some_long_calculation
@do_some_long_calculation ||= my_calc_here
end
end
這意味着,一旦我們調用do_some_long_calculation
結果將被保存到@do_some_long_calculation
和後續調用不會觸發my_calc_here
方法。
延遲初始化僅在需要時才執行此長時間執行,而不是在初始化對象時執行。
其實第一個代碼示例還演示了延遲初始化。 非延遲初始化版本會是什麼樣子:
class A
def initialize
@do_some_long_calculation = my_calc_here
end
def do_some_long_calculation
@do_some_long_calculation
end
end
正如你所看到的,在這裏,我們立即做冗長的計算對A類的初始化,而在第一個例子中,我們僅做計算時的精確方法叫做。
長計算仍然只進行一次,但在初始化類而不是在明確調用時。