Булеві літерали в PowerShell


151

Які булеві літерали в PowerShell?


23
Це гарне запитання, і воно отримало відгук у мене. Я завжди підтримую такі питання, які відображаються в пошуку Google і допомагають мені. Ці 4 голосисти повинні переосмислити своє ставлення до легких питань початкового рівня, як це.
ulidtko

Відповіді:


172

$trueі $false.

Однак це константи. Булелів немає на мовному рівні.

Залежно від того, де вони вам потрібні, ви також можете використовувати все, що примушує булеве значення, якщо тип має бути булевим, наприклад, у викликах методів, які потребують булевих (і не мають суперечливих перевантажень) або умовних операторах. Наприклад, більшість ненульових об'єктів є істинними. null, порожні рядки, порожні масиви та число 0є помилковими.


18

[bool]1а [bool]0також працює.


3
Якщо бути точним, ви можете використовувати багато речей, які можуть бути примушені бути булевими в контекстах, де відбувається перетворення, наприклад, в умовному заяві. І в тих випадках вам взагалі не потрібно виступати. if ($s.Length) { ... }ідеально добре, наприклад.
Joey

5

Для того, щоб додати додаткову інформацію до вже існуючих відповідей : булеві літерали $trueі $falseтакож працювати як при використанні в якості параметрів командного рядка для PowerShell (PS) скриптів. Для наведеного нижче сценарію PS, який зберігається у файлі з назвою installmyapp.ps1:

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

Тепер, якщо я повинен викликати цей PS-файл із командного рядка PS, це я можу зробити:

installmyapp.ps1 -cleanuprequired $true

АБО

installmyapp.ps1 -cleanuprequired 1

Тут 1і $trueрівнозначні. Також 0і $falseє рівнозначними.

Примітка . Ніколи не очікуйте, що літеральний рядок trueможе автоматично перетворюватися на булевий. Наприклад, якщо я запускаю команду нижче:

installmyapp.ps1 -cleanuprequired true

не вдалося виконати скрипт із наведеною нижче помилкою:

Неможливо обробити перетворення аргументу параметром "очищено". Неможливо перетворити значення "System.String" у тип "System.Boolean". Булеві параметри приймають лише булеві значення та числа, такі як $ True, $ False, 1 або 0.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.