2009-05-15 16 views
14

में फ़ंक्शन पैरामीटर क्या फ़ंक्शन परिभाषा के अंदर "परम (...)" निर्माण का उपयोग करने का कोई कारण है?PowerShell

मेरी समझ यह है कि आपको स्क्रिप्ट्स (और स्क्रिप्टब्लॉक) पर पैरामीटर निर्दिष्ट करने के लिए इसका उपयोग करना चाहिए। मैं वेब पर बहुत से उदाहरण देखता हूं जिसमें फ़ंक्शन नाम के बाद पैरामीटर सूचीबद्ध करने के बजाय इस तरह सूचीबद्ध पैरामीटर हैं।

उदाहरण:

function Foo([string]$Bar){ 
    #Body of function 
} 

या,

function Foo{ 
    Param([string]$Bar) 

} 
+0

शायद किसी के पास बेहतर जवाब हो, लेकिन मैं अपना वोट कास्टिंग कर रहा हूं क्योंकि यह पूरी तरह से स्वाद का विषय है। –

+0

इस जिससे पता चलता है तुम सही हो मिला: http://www.vistax64.com/powershell/62095-powershell-arguments-param-vs-args.html –

+0

संपादित सवाल scriptblocks शामिल करने के लिए। –

उत्तर

19

वी 1 में, यह वास्तव में केवल एक वरीयता है। param कथन का उपयोग परंपरागत रूप से अधिक औपचारिक रहा है, लेकिन कार्यात्मक रूप से यह वही बात है।

आप शायद क्योंकि पैरामीटर, सी # में विशेषताओं के समान करने के लिए विशेषताओं को जोड़ने की क्षमता की PowerShell V2 में PARAM का एक बहुत अधिक उपयोग देखेंगे।

param 
(
[Parameter(Mandatory=$true, 
      Position=0, 
      ValueFromPipeline = $true, 
      ValueFromPipelineByPropertyName = $true)] 
[Alias("name")] 
[String] 
$path 
) 

यहाँ आप पैरामीटर विशेषता और उस गुण को बहस का एक समूह निर्दिष्ट कर सकते हैं। आप उपनाम और कई अन्य सत्यापन आवश्यकताएं भी निर्दिष्ट कर सकते हैं।

कीथ कुछ महान अंक भी बनाता है। आप पैरामीट स्क्रिप्टब्लॉक (lambda expressions) या पीएस 1 स्क्रिप्ट में पैरामीटर पास करने के लिए पैरा कथन का उपयोग कर सकते हैं।

1
एक निरंतरता उपाय के रूप में

संभवतः? हमेशा पैरामीटर निर्दिष्ट करना पठनीयता में सुधार करता है।

6

परम() एक स्क्रिप्ट फ़ाइल के लिए और scriptblocks के लिए पैरामीटर निर्दिष्ट करने की जरूरत है:

PS> $sb = {param($x,$y) $x + $y} 
PS> &$sb 1 3 
4 

होने यह भी पारंपरिक कार्यों के लिए उपलब्ध हो बस एक स्थिरता बात IMO है। यह उन्नत कार्यों के लिए अच्छा है, जिसमें प्रति पैरामीटर, एर मेटाडाटा, प्रति पैरामीटर होता है।

-1

परम एक समारोह है कि एक फार्म चर है कि अपने कार्यक्रम के लिए पारित हो जाता है का मान निकालने के लिए प्रयोग किया जाता है (Perl हो सकता है या किसी पटकथा भाषा शायद उस CGI उपयोग करता है)।

उदाहरण के लिए, XHTML रूप में, जब आप इनपुट तत्व (टैग) का उपयोग करते हैं और टाइप को "टेक्स्ट" निर्दिष्ट करते हैं तो आप "name" नामक पैरामीटर का भी उपयोग करेंगे। नाम मान दिया जाता है, संख्या का कहना है, और इतना है कि यह मूल्य है कि उपयोगकर्ता अपने रूप में पाठ बॉक्स में प्रवेश करती है निकाल सकते हैं यह मान param समारोह के लिए पैरामीटर होना चाहिए।