J'essaie de comprendre pourquoi les deux déclarations suivantes donnent des résultats différents:
&{,$null} | % {'x'} # x
&{,(1)[1]} | % {'x'} # no output
,$null
et ,(1)[1]
semblent tous deux être des tableaux contenant un seul élément nul. Pourtant, ils se comportent différemment lors de la sortie d'un scriptblock. Que se passe-t-il ici?
Le second retourne AutomationNull.Value
qui n'est pas énuméré par le pipeline.
$null
est énuméré.
Voir par exemple l'implémentation de foreach:
https://github.com/PowerShell/PowerShell/blob/bcf86d4f8a1ce0ef11f0e9100490e790fb067574/src/System.Management.Automation/engine/runtime/Operations/MiscOps.cs#L2748
Merci @powercode. Pour les autres lecteurs, voici quelques ressources sur AutomationNull
:
@ alx9r : Cela revient à la question que vous avez posée plus tard dans # 6436 et sur laquelle j'ai mis l'accent sur https://github.com/PowerShell/PowerShell/issues/6436#issuecomment -375151317, mais j'ai décidé de créez un problème distinct pour celui-ci: # 6823