13
Da zurückkehren, dass dies funktioniert:Powershell nicht ein leeres Array als Array
$ar = @()
$ar -is [Array]
True
Warum funktioniert das nicht?
function test {
$arr = @()
return $arr
}
$ar = test
$ar -is [Array]
False
Das ist, warum wird kein leeres Array von der Testfunktion zurückgegeben?
soooooo frustrierend. Wenn Sie @ zurückgeben (/ * einige gefilterte Ausdrücke, die keine Elemente */haben), stoßen Sie auch auf das gleiche Verhalten. return, @ (/ * expr * /) ist ein Fix ... aber es ist hacky wie die Hölle. So leicht zu übersehen. –
Diese dummen Arbeiten kosteten mich ungefähr einen Tag in der verdammten Zeit. Ich konnte nicht herausfinden, wie mein Skript doppelt so groß war wie die Werte im Array. Danke, dass du das geschrieben hast. Warum sollten sie überhaupt denken, dass das eine gute Idee für Funktionen ist? So frustrierend! Der schlimmste Teil ist, ich hatte ein '$ arr.add (1)', das die Zählung des Arrays danach ausgab. Doing '$ x = $ arr.add (1)' behob das Problem. Hacky. –
@BradFJacobs: Sie könnten auch '... | verwenden Out-Null' oder '...> $ null', um eine unerwünschte Ausgabe zu unterdrücken. Ich würde nicht in Betracht ziehen, alle nicht erfaßten Ausgaben per se schlecht zu machen, aber für die meisten Leute mit einem Hintergrund in anderen Programmiersprachen ist das einfach unerwartet. Bei richtiger Verwendung kann es das Zurückgeben von Daten aus einer Funktion vereinfachen, da Sie nicht alle gewünschten Ausgaben in einer Variablen sammeln müssen, bevor Sie sie zurückgeben. –