Tôi có một hàm chấp nhận giá trị enum làm tham số. Như một ví dụ, hãy xem xét cái gì đó như:Chuyển các giá trị enum vào một hàm trong PowerShell
(PS) > function IsItFriday([System.DayOfWeek] $dayOfWeek) {
if($dayOfWeek -eq [System.DayOfWeek]::Friday) {
"yes"
} else {
"no"
}
}
Bây giờ, nếu tôi gọi nó như thế này, mọi thứ đều tốt:
(PS) > $m = [System.DayOfWeek]::Monday
(PS) > IsItFriday $m
no
Nhưng nếu tôi gọi hàm truyền trực tiếp các giá trị enum, tôi nhận được một lỗi khá khó hiểu:
(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
Sự khác nhau giữa khởi tạo biến với giá trị enum và chuyển giá trị enum trực tiếp là gì?
tôi biết về việc chuyển đổi loại ngầm, tiện dụng thực sự :) Những gì tôi không hiểu, dù sao, là lý do tại sao có sự khác biệt này trong hai trường hợp ... –
Lý do là trong 'IsItFriday [System.DayOfWeek] :: Monday' nó được phân tích cú pháp giống như một chuỗi. Lời giải thích đầy đủ có thể được tìm thấy trong PowerShell in Action bởi Bruce Payette. Nó giống như 'get-host get-date' so với' write-host (get-date) '. – stej