2014-11-18 2 views
1

У меня есть немного запроса о конденсации некоторого кода. Используя его в функции или два, я пишу. Сначала рассмотрим несколько примеров.Condensing Powershell Nested If/ElseIf

Это метод If/ElseIf.

If ($aVar -eq 1) { 
    If ($bVar -le $cVar) { 
     # code 
     # code 
     # code 
     # code 
    } 
} 
ElseIf ($aVar -eq 2) { 
    If ($bVar -gt $cVar) { 
     # code 
     # code 
     # code 
     # code 
    } 
} 

И вот метод переключения.

Switch ($aVar) { 
    {$_ -eq 1} { 
     If ($bVar -le $cVar) { 
      #code 
      #code 
      #code 
      #code 
     } 
    } 
    {$_ -eq 2} { 
     If ($bVar -gt $cVar) { 
      #code 
      #code 
      #code 
      #code 
     } 
    } 

Можно ли вообще конденсировать это?

Секции #code - то же самое, поэтому задавалось вопросом, есть ли способ записать его один раз вместо того, чтобы иметь его дважды в любом используемом методе.

Спасибо!

+0

Напишите функцию и позвоните так, как только захотите. –

+0

Вы хотите сконденсировать условные выражения или просто повторно использовать части '# code'? Предполагается ли, что второе условие является частью повторно используемого кода? – briantist

+0

Билл, вы просто предлагаете вложенную в функцию «хозяина» другую функцию? Сжатие условного ifs было бы идеальным, но я не уверен, как бы я справился с этим. Только секции #code - это статический код, который идентичен - если я могу только написать это один раз, это было бы здорово. Возможно, функция - это то, как я продолжаю. – jagovski

ответ

2

Как насчет использования аргументов -OR и -AND?

If(($aVar -eq 1 -and $bVar -le $cVar) -or ($aVar -eq 2 -and $bVar -gt $cVar)){ 
    #code 
    #code 
    #code 
    #code 
} 
+0

Кажется, что это хорошо работает. Спасибо :) – jagovski