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类的初始化,而在第一个例子中,我们仅做计算时的精确方法叫做。
长计算仍然只进行一次,但在初始化类而不是在明确调用时。