Упростите логику условий с помощью тернарных операторов PowerShell

Конструкция if/then является обычной для кода PowerShell, однако вы знаете ли, что существует другой способ, называемый тернарным оператором, который позволяет сделать вашу конструкцию if/then более лаконичной? Давайте узнаем, как создать собственный тернарный оператор в PowerShell.

За счет уменьшения читаемости, как говорят некоторые, тернарный оператор создает условную логику, которая является более лаконичной, простой и содержит меньше кода. Они правы, но так хорошо иметь это тернарное поведение в PowerShell!

Если вы не знакомы с тернарным оператором, это, по сути, использование хэш-таблицы или аналогичной конструкции для принятия условного решения на основе заданных критериев.

If/Then в PowerShell

Чтобы объяснить тернарный оператор Powershell, давайте сначала рассмотрим пример конструкции if/then.

$CarColor = 'Blue'
if ($CarColor -eq 'Blue') {
    'The car color is blue'
} else {
    'The car color is not blue'
}

С первого взгляда вы могли бы подумать, что в этом нет ничего плохого. Фактически, на самом деле нет, но это условие можно проверить так же легко в одну строку (не превышая мой личный лимит в 115 символов).

Теперь создайте хэш-таблицу PowerShell с двумя ключами: $true и $false. Затем задайте значения, которые вы хотите отобразить, если выполнено условие, которое вы определяете.

@{ $true = 'The car color is blue'; $false = 'The car color is not blue' }
[$CarColor -eq 'Blue']

Затем определите условие ($CarColor равно Blue) и проверьте, выполняется ли это условие с помощью $CarColor -eq 'Blue'.

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}
$CarColor -eq 'Blue'

Теперь используйте условие ($CarColor -eq 'Blue') в качестве ключа в этой хеш-таблице. Это выполняет проверку, а затем использует результат для поиска ключа в хеш-таблице.

Завершение работы с оператором тернарным оператором PowerShell

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}[$CarColor -eq 'Blue']
A custom PowerShell ternary operator

Всего одна строка! Разве это не намного более лаконично? Вместо использования оператора if/then я использую хеш-таблицу и выполняю поиск на основе того, равен ли $CarColor значению Blue или нет. Полученный индекс затем выводится в консоль. Если вы хотите использовать этот метод, это так же просто, как заполнение этих пропусков:

@{$true = $ResultyouwanttodoifTrue; $false = $ResultyouwantifFalse}[]

Вы также можете добавить в хеш-таблицу не только $true и $false. Вы можете добавить любое количество условий и проверять их. Это простой способ заменить длинные операторы if/then или операторы switch.

Теперь у вас есть собственный тернарный оператор PowerShell, которым вы можете начать пользоваться в своих скриптах уже сегодня!

Source:
https://adamtheautomator.com/powershell-ternary/