Tengo la siguiente función de PowerShell que funciona bien para cualquier entrada excepto para 1
. Si le paso una entrada de 1
, devolverá una matriz con dos elementos 1,1
en lugar de un único elemento que a su vez es una matriz de dos elementos (1,1)
.La matriz de Jagged PowerShell está perdiendo una dimensión cuando solo existe un elemento
¿Alguna idea de cómo puedo hacer que PowerShell devuelva una matriz dentada con un elemento que a su vez es una matriz?
function getFactorPairs {
param($n)
$factorPairs = @()
$maxDiv = [math]::sqrt($n)
write-verbose "Max Divisor: $maxDiv"
for($c = 1; $c -le $maxDiv; $C++) {
$o = $n/$c;
if($o -eq [math]::floor($o)) {
write-debug "Factor Pair: $c, $o"
$factorPairs += ,@($c,$o) # comma tells powershell to add defined array as element in existing array instead of adding array elements to existing array
}
}
return $factorPairs
}
Aquí es mi prueba y es la salida que muestra el problema. Puede ver que el primer ejemplo (1 como entrada) devuelve una longitud de 2, aunque solo se encontró un par de factores. El segundo ejemplo (6 como entrada) funciona correctamente y devuelve una longitud de 2 con dos pares de factores encontrados.
~» (getFactorPairs 1).length
DEBUG: Factor Pair: 1, 1
2
~» (getFactorPairs 6).length
DEBUG: Factor Pair: 1, 6
DEBUG: Factor Pair: 2, 3
2
Great workround y excelente enlace, y el error parece haberse solucionado (https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=281908&SiteID=99) presumiblemente en PowerShell v3 –