0
有什麼好的方法來確保管道結果總是一個沒有數組字面量的數組@()
?確保管道總是在不使用@()的情況下產生數組?
目前,我總是發現自己正在編寫管道,並假定結果是一個數組,例如,我知道我需要確保$Results
總是一個數組。所以,我回來加魔法@()
,@(
在前面和)
在後面:通過向一個空數組
$Results = @() + <pipeline_statement>
我的問題
$Results = @(<pipeline_statement>)
或更神奇的:是有什麼辦法可以確保一個流水線總是導致一個數組?那不需要「魔術」@()
?我想創建一個函數來收集管道結果,例如ConvertTo-Array
,如:
$Results = <pipeline_statement> | ConvertTo-Array
但我寧願使用默認的cmdlet或如有成語。
注意: 我也動心創建ConvertTo-CustomObject
因爲我經常發現自己從哈希表中創建PSCustomObject
。
嗯......這是一個很好的方式,需要提醒的是它會產生'$ null'而不是零長度數組,如果管道結果爲零目的。 – tkokasih
@wannabeprogrammer那麼,如果我做'[數組] $ a = $ null; $ a.length'我得到0.所以,如果需要的話,可以在運行任何foreach代碼之前檢查長度。 '$ a | foreach {「b」}導致一次迭代,其中null作爲'$ _'提供。儘管如此,如果有人知道某些東西可以返回null,他們可以寫'if($ a -eq $ null){$ a = @()}' – Vesper