今天我注意到了PowerShell的一种有趣行为,并编写了以下代码来展示它。当您运行以下代码时:
然而,当你将代码更改为以下内容时:
你将会得到:
function test()
{
$a = @(1,2);
Write-Host $a.gettype()
return $a;
}
$b = test
Write-Host $b.gettype();
你所拥有的是:
System.Object[]
System.Object[]
然而,当你将代码更改为以下内容时:
function test()
{
$a = @(1);
Write-Host $a.gettype()
return $a;
}
$b = test
Write-Host $b.gettype();
你将会得到:
System.Object[]
System.Int32
能否有人提供关于这个“功能”的更多细节?貌似PowerShell规范没有提到过这一点。
谢谢。
顺便说一下,我在PowerShell 2、3和4上都测试过这段代码。
return ,$value
。以某种方式,即使通过赋值,它也会保留单元素数组。参见。 - Jonathan Lidbeck