أحاول أن أفهم لماذا تسفر العبارتان التاليتان عن مخرجات مختلفة:
&{,$null} | % {'x'} # x
&{,(1)[1]} | % {'x'} # no output
يبدو أن كلا من ,$null
و ,(1)[1]
عبارة عن مصفوفتين تحتويان على عنصر واحد فارغ. ومع ذلك ، فإنهم يتصرفون بشكل مختلف أثناء الإخراج من البرنامج النصي. ماذا يحصل هنا؟
الثانية ترجع 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