При реализации базовой memoization в Ruby существует шаблон или простой способ вернуть memoized экземпляр var, если значение предикаты при более сложной оценке перед рукой?Оптимизация замещения базового метода с ранним возвратом
Say назначение something
требует интенсивного расчета, Руби достаточно умна, чтобы вернуть переменную экземпляра, если он присутствует, или 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
Что было бы лучше, если бы у меня был образец memoization, чтобы реализовать то, что у меня есть?
Первая строка вашего метода возвращает '@ some_value' или' nil', но поскольку это значение не фиксируется переменной, линия не имеет никакой цели. –