相关疑难解决方法(0)

Array.Add vs + =

我在PowerShell Arrays中发现了一些有趣的行为,即如果我将数组声明为:

$array = @()
Run Code Online (Sandbox Code Playgroud)

然后尝试使用该$array.Add("item")方法向其添加项目,我收到以下错误:

使用"1"参数调用"Add"的异常:"Collection具有固定大小."

但是,如果我使用附加项目$array += "item",则会毫无问题地接受该项目,并且"固定大小"限制似乎不适用.

为什么是这样?

arrays powershell

162
推荐指数
3
解决办法
31万
查看次数

PowerShell 的特殊数组头/尾分配记录在哪里?

我刚刚注意到这是有效的 PowerShell 代码:

PS> $first, $rest = @(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

该语句将数组中的第一项放入 中$first,将其余项目放入 中$rest

PS> $first
1

PS> $rest
2
3
Run Code Online (Sandbox Code Playgroud)

它甚至适用于任意数量的变量,将当前头部推入下一个变量,将尾部推入最后一个变量。你可以自己尝试一下。

PS> $first, $second, $rest = @(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

$null如果没有足够的头或尾可以放入其中一个变量,它似乎会分配一个值。即使在这种情况下$rest(我宁愿看到一个空数组,但无论如何)。

PS> $first, $second, $rest = @(1)

PS> $first
1

PS> $second

PS> $second -eq $null
True

PS> $rest

PS> $rest -eq $null
True

PS> $rest -eq @()
False
Run Code Online (Sandbox Code Playgroud)

问题,也是我的问题,是我没有在任何地方看到这个记录!我正在尝试找出何时支持此功能。具体是如何实施的。如果它适用于任何其他类型。

我检查了about_Assignmentabout_Arrays、 、about_Splatting,但没有任何运气。

arrays powershell variable-assignment assignment-operator multiple-assignment

6
推荐指数
1
解决办法
2091
查看次数