जाहिर ||=
मैं एक विधि को कैसे याद कर सकता हूं जो रूबी में सच, झूठी, या शून्य वापस कर सकता है?
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
वहाँ ऐसा करने का एक और अधिक परंपरागत या कारगर तरीका है?
अद्यतन मुझे एहसास हुआ कि मैं false
के अलावा nil
memoize करना चाहता था - Andrew Marshall जो एक अन्यथा पूरी तरह से सही जवाब दिया करने के लिए मैं क्षमाप्रार्थी - यह वापस सभी तरह से चला जाता है https://rails.lighthouseapp.com/projects/8994/tickets/1830-railscachefetch-does-not-work-with-false-boolean-as-cached-value करने के लिए।
यह 'शून्य' और 'नल' की संपूर्ण अवधारणा है। – meagar
मैंने अपना प्रश्न संपादित किया क्योंकि मैंने इसे पहली बार सही नहीं किया था - मैं भी शून्य को याद करना चाहता हूं। –