Powershell: Почему (1) [1] отличается от $ null?

Созданный на 10 мар. 2018  ·  3Комментарии  ·  Источник: PowerShell/PowerShell

Я пытаюсь понять, почему следующие два утверждения дают разные результаты:

&{,$null} | % {'x'} # x
&{,(1)[1]} | % {'x'} # no output

,$null и ,(1)[1] кажутся массивами, содержащими один нулевой элемент. Однако они ведут себя по-разному во время вывода из блока сценария. Что здесь происходит?

Issue-Question Resolution-Answered

Все 3 Комментарий

Второй возвращает AutomationNull.Value который не перечисляется конвейером.

Перечисляется $null .

См., Например, реализацию foreach:
https://github.com/PowerShell/PowerShell/blob/bcf86d4f8a1ce0ef11f0e9100490e790fb067574/src/System.Management.Automation/engine/runtime/Operations/MiscOps.cs#L2748

Спасибо @powercode. Для других читателей вот несколько ресурсов по AutomationNull :

@ alx9r : Это сводится к вопросу, который вы позже задали в # 6436 и который я выделил в https://github.com/PowerShell/PowerShell/issues/6436#issuecomment -375151317, но я решил создайте для него отдельный выпуск: # 6823

Была ли эта страница полезной?
0 / 5 - 0 рейтинги