Powershell v1: возможно ли присвоить результат оператора switch переменной? - PullRequest
5 голосов
/ 10 апреля 2009

Можно ли присвоить результат оператора switch переменной.

Например, вместо:

switch ($Extension) 
    { 
        doc {$Location = "C:\Users\username\Documents\"; break} 
        exe {$Location = "C:\Users\username\Downloads\"; break}
        default {$Location = "C:\Users\username\Desktop\"}
    }

Можно ли сделать что-то похожее на:

$Location = 
{
    switch ($Extension) 
    { 
        doc {"C:\Users\username\Documents\"; break} 
        exe {"C:\Users\username\Downloads\"; break}
        default {"C:\Users\username\Desktop\"}
    }
}

Попытка вышеуказанного приводит к $ location, содержащему весь блок кода в виде строки.

Ответы [ 2 ]

7 голосов
/ 10 апреля 2009

Для V1 я бы обернул оператор switch в функцию.

function Get-DocumentLocation($Extension)
{
    switch ($Extension) 
    { 
        doc {"C:\Users\username\Documents\"; break} 
        exe {"C:\Users\username\Downloads\"; break}
        default {"C:\Users\username\Desktop\"}
    }
}

$Location = Get-DocumentLocation $extension
2 голосов
/ 10 апреля 2009

Работает ли следующее?

$Location = (switch ($Extension) {
               doc {"C:\Users\username\Documents\"; break}
               exe {"C:\Users\username\Downloads\"; break}
               default {"C:\Users\username\Desktop\"}
             })

Или, может быть

$Location = $(switch ($Extension) {
               doc {"C:\Users\username\Documents\"; break}
               exe {"C:\Users\username\Downloads\"; break}
               default {"C:\Users\username\Desktop\"}
             })

Сейчас у меня нет v1 для тестирования, но я думаю, что это может сработать.

...