Как мне запомнить метод, который может возвращать true, false или nil в Ruby?

очевидно||= не будет работать

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

Есть ли более обычный или эффективный способ сделать это?

UPDATE Я понял, что хочу запомнитьnil в дополнение кfalse - это продолжается вплоть доhttps://rails.lighthouseapp.com/projects/8994/tickets/1830-railscachefetch-does-not-work-with-false-boolean-as-cached-value - мои извиненияЭндрю Маршалл который дал в противном случае совершенно правильный ответ.

Ответы на вопрос(2)

Ваш ответ на вопрос