वैकल्पिक विधि पैरा को संभालने का सामान्य तरीका क्या है? - रूबी, पैरामीटर गुजर रहा है

मेरे पास एक विधि है जिसमें मैं गतिशील पारामों में उत्तीर्ण होना चाहता हूं। विधि को एक लूप में और कभी-कभी कहा जाता है value2 उपलब्ध है और कभी-कभी नहीं।

वैकल्पिक विधि params को संभालने का सामान्य तरीका क्या है?

my_method(:value1 => 1,
:value2 => 2 if foo,  # this is not working
:value3 => 3)

उत्तर:

उत्तर № 1 के लिए 1

मैं आमतौर पर इस तरह से हैश बनाता हूं:

opts = {:value1 => 1,
:value3 => 3}
opts[:value2] = 2 if foo
my_method(opts)

इस दृष्टिकोण का लाभ यह है कि हर कोई पकड़ता है if foo जैसा कि यह एक विशेष मामला है। अन्यथा, कई प्रोग्रामर, मेरे जैसे, पहली नज़र में यह याद करेंगे और भ्रमित हो जाएंगे: value2 सेट नहीं है।

कभी-कभी आपके पास डिफ़ॉल्ट सेटिंग्स होती हैं, तो आप इस दृष्टिकोण का उपयोग कर सकते हैं:

default = {:value1 => 0,
:value2 => 0,
:value3 => 0}
opts = {:value1 => 1,
:value3 => 3}
my_method(default.merge(opts))

या इससे भी बेहतर:

DEFAULT_OPTS = {:value1 => 0,
:value2 => 0,
:value3 => 0}

def my_method(opts)
opts = DEFAULT_OPTS.merge(opts)
# ...
end

my_method(...)

जवाब के लिए 0 № 2

इसे देखो ब्लॉग पोस्ट जो आपकी सभी जरूरतों को पूरा करे।


संबंधित सवाल
सबसे लोकप्रिय