ग्रूवी में, अगर मेरे पास है:डिफ़ॉल्ट ग्रूवी विधि पैरामीटर मान लागू करने जब अशक्त गुजर
def say(msg = 'Hello', name = 'world') {
"$msg $name!"
}
और फिर कहते हैं:
say() // Hello world!
say("hi") // Hi world!
say(null) // null world!
पिछले एक सचमुच के रूप में null
और आवेदन नहीं व्याख्या हो रही है क्यों है डिफ़ॉल्ट मान? क्या यह डिफ़ॉल्ट विधि तर्क मानों के उद्देश्य को पराजित नहीं करता है? मुझे लगता है कि null
गुजरने से कुछ भी w/r/t तर्क लंबाई गुजरने से अलग है। अगर मैं items(null)
फोन लेकिन ठीक से काम करता है, तो मैं सिर्फ items()
कहना
def items(Set<String> items = []) {
new HashSet<>(items)
}
यह एक NullPointerException
फेंक देगा:
मेरे यहाँ समस्या यह है कि अगर मैं अब एक विधि है कि एक तर्क के रूप में एक संग्रह लेता है। इसे सही काम करने के लिए, मुझे लाइन को new HashSet<>(items ?: [])
होने के लिए बदलना है, जो फिर से, डिफ़ॉल्ट विधि तर्क मान रखने के पूरे उद्देश्य को हराने के लिए प्रतीत होता है।
मुझे यहां क्या याद आ रही है?
यह कुल समझ में आता है। धन्यवाद और अन्य पोस्ट के लिंक के लिए धन्यवाद। तो एल्विस ऑपरेटर का उपयोग करने के लिए सही जवाब क्या है? – icfantv
हाँ। मुझे लगता है कि एल्विस अच्छा समाधान है। – Will
@icfantv और यदि आप डुप्लिकेशंस को नापसंद करते हैं, तो डिफ़ॉल्ट पैरा और एल्विस + के रूप में शून्य का उपयोग करें जिसे आप hav.e करना चाहते हैं – cfrick