Почему @ ($ null) равно $ false, а @ ($ null, $ null) равно $ true? - PullRequest
3 голосов
/ 24 апреля 2009

Любопытно, что за этим стоит:

@() -as [bool]
# False

@($null) -as [bool] 
# False

@($null, $null) -as [bool]
# True

Я ожидал бы либо False / True / True, либо False / False / False, но не False / False / True.

1 Ответ

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

Как указано в кратком справочнике Powershell¹:

True                                                 False 
~~~~                                                 ~~~~~
$TRUE                                                $FALSE 
Any string of length > 0, except the word “false”    Empty string or the string “false” 
Any number ≠ 0                                       Any number = 0 
Array of length > 1                                  Array of length 0 
Array of length 1 whose element is true              Array of length 1 whose element is false 
A reference to any object                            Null 

Я думаю, что идея заключалась в том, что массив с одним элементом $false может легко произойти, если вы поместите вывод командлета / функции в массив. Можно ожидать большего значения, но из-за какой-то ошибки он вернул $false, но $false дважды в массиве в этом случае может быть маловероятным.

Или, может быть, нам следует подождать, пока Джеффри Сновер ответит здесь: -)

¹ C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Documents \ en-US \ QuadFold.rtf на моем компьютере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...