Estoy tratando de entender por qué las siguientes dos declaraciones producen diferentes resultados:
&{,$null} | % {'x'} # x
&{,(1)[1]} | % {'x'} # no output
,$null
y ,(1)[1]
ambos parecen ser matrices que contienen un solo elemento nulo. Sin embargo, se comportan de manera diferente durante la salida de un bloque de script. ¿Que está sucediendo aquí?
El segundo devuelve AutomationNull.Value
que no está enumerado por la canalización.
$null
está enumerado.
Vea, por ejemplo, la implementación de foreach:
https://github.com/PowerShell/PowerShell/blob/bcf86d4f8a1ce0ef11f0e9100490e790fb067574/src/System.Management.Automation/engine/runtime/Operations/MiscOps.cs#L2748
Gracias @powercode. Para otros lectores, aquí hay algunos recursos sobre AutomationNull
:
@ alx9r : Esto se reduce a la pregunta que hizo más tarde en el n. ° 6436 y que he enfocado en https://github.com/PowerShell/PowerShell/issues/6436#issuecomment -375151317, pero he decidido hacerlo cree una edición separada para ello: # 6823