निम्नलिखित फ़ंक्शन पर विचार करें:
function f1 {param ($ sb = {}, $ 'S =' ') अगर ($ sb -isnot [scriptblock]) {' scriptblock '} अगर ($ s- नहीं [स्ट्रिंग]) {' string '}}
अब आह्वान करें यह एक अलग पैरामीटर के साथ:
पीएस सी: \ & gt; $ Splat = @ {foo = 'bar'} पीएस सी: \ & gt; F1 @splat
के रूप में अपेक्षित, कुछ भी नहीं लौटाया गया है अब $ null
splat पैरामीटर के साथ इसे फिर से प्रयास करें:
PS C: \ & gt; $ Splat = $ null PS C: \ & gt; F1 @splat स्क्रिप्टब्लॉक
अजीब तरह से, स्क्रिप्टब्लॉक
वापस आ गया है जाहिर है, कम से कम [scriptblock]
पैरामीटर के लिए, जब कोई $ null
splat पैरामीटर उपयोग किया जाता है तो पावरशेल्ड डिफ़ॉल्ट मान को सम्मान नहीं कर रहा है लेकिन powershell [string]
के लिए डिफ़ॉल्ट मान का सम्मान करता है।
$ splat = @ {foo = 'bar'} "$ (& amp; $ args} @splat)" - "पाठ"> यह समझने में मदद करने के लिए एक प्रदर्शन है - फू: बार
जब आप हैश तालिका को अलग कर लेते हैं, तो उसे -के में परिवर्तित कर दिया जाता है: मान स्ट्रिंग जोड़ी जो आपके फ़ंक्शन के पैरामीटर बन जाते हैं।
अब कोशिश करें: < / P>
$ splat = $ null "$ (& amp; $ args} @splat)"
कुछ भी नहीं लौटाया गया है पैरामीटर स्ट्रिंग उत्पन्न करने की कोई चाबियाँ नहीं हैं, इसलिए अंतिम परिणाम समान है, जैसे कि कोई भी मानदंड नहीं गुजर रहा है।
No comments:
Post a Comment