कीवर्ड तर्क में कुछ विशिष्ट लाभ कोई भी पर छुआ है की है।
सबसे पहले आप तर्कों के क्रम के साथ नहीं हैं।
def yo(sup:, whats:"good", dude:"!")
# do your thing
end
yo(sup: "hey", dude: "?")
या यहाँ तक कि
yo(dude: "?", sup: "hey")
यह निकालता है:
def yo(sup, whats="good", dude="!")
# do your thing
end
yo("hey", nil, "?")
आप कीवर्ड तर्कों का उपयोग करता है, तो: तो एक मामले में आप एक शून्य तर्क हो सकता है, जहां कभी कभी यह एक बहुत क्लीनर लग रहा है तर्कों के आदेश को याद रखने की आवश्यकता है। हालांकि, नुकसान आपको तर्क के नाम को याद रखना है, लेकिन यह कम या ज्यादा सहज होना चाहिए।
इसके अलावा, जब आपके पास ऐसी कोई विधि हो जो भविष्य में अधिक तर्क लेने की आवश्यकता हो।
def create_person(name:, age:, height:)
# make yourself some friends
end
क्या आपके सिस्टम अचानक एक व्यक्ति की पसंदीदा कैंडी बार के बारे में जानना चाहता है, या अगर वे अधिक वजन रहे हैं, कैसे आप ऐसा कर सकता है (उनके पसंदीदा कैंडी बार के भी कई उपभोक्ता से)? सरल:
def create_person(name:, age:, height:, favorite_candy:, overweight: true)
# make yourself some fat friends
end
कीवर्ड तर्कों से पहले वहाँ हमेशा हैश था, लेकिन है कि निकालने और चर आवंटित करने के लिए एक बहुत अधिक बॉयलरप्लेट कोड का नेतृत्व किया। बॉयलरप्लेट कोड == और टाइपिंग == अधिक संभावित टाइपो == कम समय में भयानक रूबी कोड लिखना।
def old_way(name, opts={})
age = opts[:age]
height = opts[:height]
# all the benefits as before, more arthritis and headaches
end
तुम सिर्फ एक विधि है कि एक तर्क लेता है और सबसे अधिक संभावना को बदलने के लिए एक की जरूरत है कभी नहीं होगा सेट कर रहे हैं:
def say_full_name(first_name, last_name)
puts "#{first_name} #{last_name}"
end
फिर कीवर्ड तर्क से बचा जाना चाहिए, के बाद से वहाँ एक छोटा सा प्रदर्शन है मारो।
उत्तर में जोड़ने के लिए, उन्हें उपयोग करें जब आपको अपनी विधि परिभाषा के अंदर चरों के लिए तर्क असाइन करने की आवश्यकता होती है और कस्टम कोड लिखने से बचें। – Kashyap
कृपया हमें धोखा न दें। 'def स्वागत_ संदेश (संदेश, विकल्प = {: नाम => 'होगे'}); "# {संदेश}, # {विकल्प [: नाम]}"; end' 'welcome_message' के लिए एक-लाइनर है। हालांकि, इस दृष्टिकोण का मुख्य नुकसान यह है कि किसी को या तो 'हैश' को थोडा 'key_valid' के साथ विस्तारित करने की आवश्यकता है या उम्मीद है कि पारित कुंजी सही हैं। केए दृष्टिकोण से पता चलता है कि किन कुंजीों की अनुमति है। – mudasobwa
@ मुदासोबावा मुझे लगता है कि आप गलत हैं; आपके फ़ंक्शन के साथ, 'welcome_message ("message", {: age => 22}) परिणाम में' hoge' नहीं दिखाएगा लेकिन 'keyword' का उपयोग करेगा। आप पूरे हैश के लिए एक डिफ़ॉल्ट मान सेट करते हैं, हैश की परिभाषित कुंजी के लिए डिफ़ॉल्ट मान नहीं। – oldergod