我有以下的PowerShell函数,对于除了
有什么想法可以让PowerShell返回一个包含一个元素的嵌套数组?
1
之外的任何输入都能很好地运行。但是如果我传递一个1
的输入,它将返回一个包含两个元素1,1
的数组,而不是一个单独的元素,它本身是一个由两个元素(1,1)
组成的数组。有什么想法可以让PowerShell返回一个包含一个元素的嵌套数组?
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
}
这是我的测试和输出,显示了问题。您可以看到第一个示例(输入为1)返回长度为2,尽管只找到了一个因子对。第二个示例(输入为6)正常工作,并返回长度为2,找到了两个因子对。
~» (getFactorPairs 1).length
DEBUG: Factor Pair: 1, 1
2
~» (getFactorPairs 6).length
DEBUG: Factor Pair: 1, 6
DEBUG: Factor Pair: 2, 3
2