में किसी फ़ंक्शन में enum मानों को पास करना मेरे पास पैरामीटर के रूप में enum मान को स्वीकार करने वाला फ़ंक्शन है। अबPowerShell
(PS) > function IsItFriday([System.DayOfWeek] $dayOfWeek) {
if($dayOfWeek -eq [System.DayOfWeek]::Friday) {
"yes"
} else {
"no"
}
}
, अगर मैं इसे इस तरह आह्वान, सब कुछ ठीक है: उदाहरण के लिए, की तरह कुछ पर विचार
(PS) > $m = [System.DayOfWeek]::Monday
(PS) > IsItFriday $m
no
लेकिन अगर मैं समारोह सीधे गुजर enum मूल्य कहते हैं, मैं एक मिल बल्कि छुपे त्रुटि:
(PS) > IsItFriday [System.DayOfWeek]::Monday
IsItFriday : Cannot convert value "[System.DayOfWeek]::Monday" to type "System.DayOfWeek"
due to invalid enumeration values. Specify one of the following enumeration values and
try again. The possible enumeration values are "Sunday, Monday, Tuesday, Wednesday,
Thursday, Friday, Saturday".
At line:1 char:11
+ IsItFriday <<<< [System.DayOfWeek]::Monday
enum मान के साथ एक चर आरंभ और enum मूल्य सीधे गुजर के बीच क्या अंतर है?
> IsItFriday ([System.DayOfWeek]::Monday)
भी यह संभव है इस तरह केवल तार पारित करने के लिए:
> IsItFriday Monday
no
> IsItFriday Friday
yes
PowerShell -
मैं अंतर्निहित प्रकार रूपांतरण के बारे में पता था, काम वास्तव में :) मैं क्या समझ में नहीं आता क्यों दो मामलों में इस अंतर नहीं है, वैसे भी, है ... –
कारण है कि 'IsItFriday [System.DayOfWeek] :: सोमवार' में यह एक स्ट्रिंग की तरह पार्स किया गया है। ब्रूस पेएट द्वारा एक्शन में पावरशेल में पूर्ण स्पष्टीकरण पाया जा सकता है। यह 'लिखने-होस्ट मिल-डेट' बनाम 'लिखने वाला होस्ट (प्राप्त करने वाला)' जैसा ही है। – stej