क्या कोई तरीका है जो एक पैरामीटर स्वीकार कर सकता है, लेकिन बिना किसी के कॉल किया जा सकता है, इस स्थिति में पैरामीटर को nil
निम्नलिखित जैसा माना जाता है?वैकल्पिक पैरामीटर के साथ एक विधि
some_func(variable)
some_func
क्या कोई तरीका है जो एक पैरामीटर स्वीकार कर सकता है, लेकिन बिना किसी के कॉल किया जा सकता है, इस स्थिति में पैरामीटर को nil
निम्नलिखित जैसा माना जाता है?वैकल्पिक पैरामीटर के साथ एक विधि
some_func(variable)
some_func
def some_func(variable = nil)
...
end
मूलभूत मूल्यों के साथ मापदंडों का और अधिक स्पष्ट विकल्प इसके अलावा, कि सावा पहले से ही पता चला है, सरणियों या हैश के उपयोग कुछ मामलों में काम हो सकता है। दोनों समाधान एक तर्क के रूप में शून्य को संरक्षित करते हैं।
1. सरणी के रूप में प्राप्त करें:
def some_func(*args)
puts args.count
end
some_func("x", nil)
# 2
2. संदेश और हैश के रूप में प्राप्त करते हैं:
def some_func(**args)
puts args.count
end
some_func(a: "x", b: nil)
# 2
केवल 'arg' के बजाय' * arg' और '** arg' का उपयोग करने का उद्देश्य क्या है? –
@ sagarpandya82 '* arg' तर्क को सरणी के रूप में एकत्र करता है। '*' के बिना आपको 'some_func (["x", nil]) कॉल करना होगा। '** arg' सभी नामित तर्क एकत्र करता है। '**' के बिना यह केवल एक ही अज्ञात तर्क, या नामित तर्कों की संख्या को स्वीकार करेगा। – bogl
तुम भी तर्क के रूप में एक हैश का उपयोग कर सकते हैं और अधिक स्वतंत्रता है:
def print_arg(args = {})
if args.has_key?(:age)
puts args[:age]
end
end
print_arg
# =>
print_arg(age: 35, weight: 90)
# => 35
फिर, ज़ाहिर है, किसी को किसी भी तरह से di डिफ़ॉल्ट शून्य और स्पष्ट शून्य के बीच fferentiate (यदि यह मायने रखता है) :) –
यही है कि 'def some_func (variable = (variable_was_not_passed = true; शून्य)) 'मुहावरे के लिए है। –
@ जोर्गब्लिमटैग क्या आप समझा सकते हैं कि यह कैसे काम करता है? धन्यवाद! – dowi