Получение текущего предмета более высокого уровня во время цикла - PullRequest
1 голос
/ 25 августа 2010

У меня есть вложенный оператор switch внутри оператора switch.Мне интересно, возможно ли захватить текущий вложенный элемент в рамках вложенного оператора switch.Я знаю, что могу сделать это с помощью цикла for с умеренной сложностью, но я надеюсь, что есть некоторая элегантность, которой мне не хватает, чтобы выполнить это с помощью операторов switch.Ниже я пытаюсь построить некоторую обработку аргументов для одного из моих сценариев.

# Process Args
$currentArg
$recurseOn = $false

:ListArgs switch -regex ($args)
{
    "-ou?" { $currentArg = "Organizational Unit"; write-host "Noticed ou switch"}
    "-li?k?e?" { $currentArg = "Compare To"; write-host "Noticed like switch"}
    "^-re?c?u?r?s?e?$" { $recurseOn = $true; write-host "Recurse switched on..."}
    default {
        :CurrentSwitch switch ($currentArg)
        {
            "Organizational Unit" { $OU = $_.$_ ; write-host "OU changed to '$($OU)'..."}
            "Compare To" { $Match = $_.$_ ; write-host "Lookup changed to '$($Match)'..."}
        }
    }
}

Я знаю, что нынешняя модель $ . $ не работает, но я ищу что-то, что могло быобратитесь к текущему пункту.Я думаю, что у меня может быть переменная-заполнитель, которую я просто заполняю текущим элементом, независимо от условия, и использую его в области видимости, но, возможно, есть что-то более элегантное.Я также попытался пометить свои операторы переключателей и попытался «ListArgs. $ _», Но безрезультатно.

Любой вклад будет высоко оценен.Заранее спасибо!

Я сделал это после публикации:

    # Process Args
$currentArg
$recurseOn = $false

:ListArgs switch -regex ($args)
{
    "-ou?" { $currentArg = "Organizational Unit"; write-host "Noticed ou switch"}
    "-li?k?e?" { $currentArg = "Compare To"; write-host "Noticed like switch"}
    "^-re?c?u?r?s?e?$" { $recurseOn = $true; write-host "Recurse switched on..."}
    default {
        $item = $_
        :CurrentSwitch switch ($currentArg)
        {
            "Organizational Unit" { $OU = $item; write-host "OU changed to '$($OU)'..."}
            "Compare To" { $Match = $item; write-host "Lookup changed to '$($Match)'..."}
        }
    }
}

И смог заставить его работать, но любой вход на $ _ или метки цикла был бы признателен.Или есть лучший способ обработки аргументов в PowerShell?

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Полагаю, что нет лучших предложений для обработки аргументов, я ответил на свой вопрос.

    $item = $_
0 голосов
/ 25 августа 2010

Я думаю, у меня может быть наполнитель переменная, которую я просто заполняю с текущий товар независимо от состояния и использовать это в рамках

Обычно я делаю это и не знаю лучшего способа. Таким образом, ваш код будет:

...
default {
    $filler = $_
    :CurrentSwitch switch ($currentArg)
    {
        "Organizational Unit" { use $filler in here }
        "Compare To" { use $filler in here }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...