显然,
因为如果它最终是
目前我知道的最好方法是将该值放入一个
||=
不起作用。def x?
@x_query ||= expensive_way_to_calculate_x
end
因为如果它最终是
false
或nil
,那么expensive_way_to_calculate_x
将会一遍又一遍地运行。目前我知道的最好方法是将该值放入一个
Array
中:def x?
return @x_query.first if @x_query.is_a?(Array)
@x_query = [expensive_way_to_calculate_x]
@x_query.first
end
有没有更常规或更有效的方法来做这件事?
更新 我意识到我想要记忆nil
除了false
之外 - 这可以追溯到https://rails.lighthouseapp.com/projects/8994/tickets/1830-railscachefetch-does-not-work-with-false-boolean-as-cached-value - 对于给出完全正确答案的Andrew Marshall,我深表歉意。
nil
和整个null
概念的用途。 - user229044