鉴于这有效:
$ar = @()
$ar -is [Array]
True
为什么这不起作用?
function test {
$arr = @()
return $arr
}
$ar = test
$ar -is [Array]
False
也就是说,为什么测试函数没有返回一个空数组?
鉴于这有效:
$ar = @()
$ar -is [Array]
True
为什么这不起作用?
function test {
$arr = @()
return $arr
}
$ar = test
$ar -is [Array]
False
也就是说,为什么测试函数没有返回一个空数组?
您的函数不起作用,因为 PowerShell 返回所有未捕获的流输出,而不仅仅是return
语句的参数。在这个过程中,一个空数组被破坏$null
了。但是,您可以通过在数组构造运算符( ) 前添加数组来保留返回的数组,
:
function test {
$arr = @()
return ,$arr
}
write-output $arr
就像只是写作一样$arr
。所以函数仍然会返回$null
。
但 write-output
有选择-NoEnumerate
。这意味着不会枚举空数组(因此被忽略 - 因为它是空的)。结果是一个空数组。
诚然,上述答案要短得多,...
function test {
$arr = @()
write-output $arr -NoEnumerate
}
(test) -is [array] ## $True