Estou tentando entender por que as duas instruções a seguir geram resultados diferentes:
&{,$null} | % {'x'} # x
&{,(1)[1]} | % {'x'} # no output
,$null
e ,(1)[1]
parecem ser arrays contendo um único elemento nulo. No entanto, eles se comportam de maneira diferente durante a saída de um scriptblock. O que esta acontecendo aqui?
O segundo retorna AutomationNull.Value
que não é enumerado pelo pipeline.
$null
é enumerado.
Veja, por exemplo, a implementação de foreach:
https://github.com/PowerShell/PowerShell/blob/bcf86d4f8a1ce0ef11f0e9100490e790fb067574/src/System.Management.Automation/engine/runtime/Operations/MiscOps.cs#L2748
Obrigado @powercode. Para outros leitores, aqui estão alguns recursos sobre AutomationNull
:
@ alx9r : Isso se resume à pergunta que você fez mais tarde em # 6436 e que coloquei em foco em https://github.com/PowerShell/PowerShell/issues/6436#issuecomment -375151317, mas decidi crie um problema separado para ele: # 6823