gpt4 book ai didi

ruby - 通过提前返回优化基本方法内存

转载 作者:数据小太阳 更新时间:2023-10-29 08:59:42 24 4
gpt4 key购买 nike

在 Ruby 中实现基本记忆化时,是否有一种模式或简单的方法可以返回记忆化的实例 var,前提是该值预先基于更复杂的评估?

假设 something 的赋值需要大量计算,Ruby 是否足够聪明以返回实例变量(如果存在),或者 something 是否总是在范围内赋值设置 @some_value 之前的那个方法?

  def some_value
@some_value if @some_value.present? # possible?
something = something_else.try(:method_name) || another_something.method_name # prevent this from evaluating after execution
@some_value ||= MyClass.new(property: something.property)
end

什么是更好的内存模式来实现我所拥有的?

最佳答案

根据您当前的代码编写方式,“密集计算”总是会发生。 Ruby 使用隐式返回,除非您显式使用关键字 return,因此,即使存在 @some_value,代码仍会执行到最后一行。

def some_value
return @some_value if @some_value.present? # possible?
something = something_else.try(:method_name) || another_something.method_name # prevent this from evaluating after execution
@some_value ||= MyClass.new(property: something.property)
end

因此,如果您想返回 @some_value(如果它存在),并且之后不运行任何代码,您将需要使用显式返回。见上文。

现在,Ruby 将检查 @some_value 是否存在,如果是 true,则返回值,否则,它将继续计算。

关于ruby - 通过提前返回优化基本方法内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39422023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com