¿Cómo puedo memorizar un método que puede devolver verdadero, falso o nulo en Ruby?
Obviamente||=
no funcionará
def x?
@x_query ||= expensive_way_to_calculate_x
end
Porque si resulta serfalse
onil
, entoncesexpensive_way_to_calculate_x
se correrá una y otra vez.
Actualmente, la mejor manera que conozco es poner el valor en unaArray
:
def x?
return @x_query.first if @x_query.is_a?(Array)
@x_query = [expensive_way_to_calculate_x]
@x_query.first
end
¿Hay una forma más convencional o eficiente de hacer esto?
ACTUALIZAR Me di cuenta de que quería memorizarnil
además defalse
- esto va todo el camino de regreso ahttps://rails.lighthouseapp.com/projects/8994/tickets/1830-railscachefetch-does-not-work-with-false-boolean-as-cached-value - mis disculpas aAndrew Marshall quien dio una respuesta completamente correcta.