gpt4 book ai didi

arrays - 两种创建数组的方式之间的区别

转载 作者:行者123 更新时间:2023-12-02 23:22:20 26 4
gpt4 key购买 nike

我刚遇到有关Powershell中数组的问题,我只想了解发生了什么。

为什么这样:

$Path = 'C:\'
$File1 = $Path + 'File1.txt'
$File2 = $Path + 'File2.txt'
$Files= @($File1, $File2)

与这种方式不同:
$Path = 'C:\'
$Files= @($Path + 'File1.txt', $Path + 'File2.txt')

因为有了第一个,我可以这样解析:
$Files| ForEach-Object {
$Test = Get-Item -Path $_
}

但是我不能使用第二个,除非我这样创建它:
$Path = 'C:\'
$Files = @(($Path + 'File1.txt'), ($Path + 'File2.txt'))

还有另一种干净的方法来创建数组吗?
谢谢 !

最佳答案

首先,您要创建一个包含2个元素的数组。在第二个实例中,您将创建一个具有单个元素的数组。 PowerShell不会将$Path + 'File1.txt'作为一个处理。

您可以使用$Files.Count来检查数组中元素的数量:第一种方法将显示2,第二种方法将显示1

您可以通过使用已标识的方括号()或使用{}来包装变量来解决此问题:

$Files= @("${Path}File1.txt", "${Path}File2.txt")

如果您的计划是在 ForEach-Object中使用它,则可以在该循环中使用 $Path:
$Path = 'C:\'
$Files= @('File1.txt', 'File2.txt')

$Files| ForEach-Object {
$Test = Get-Item -Path "${Path}$_"
}

附录

根据培根比特斯的有用评论,这是由于 Operator Precedence导致的, ,的优先级高于 +
@($Path + 'File1.txt', $Path + 'File2.txt')

变成:
($Path) + ('File1.txt', $Path) + ('File2.txt')

代替:
($Path + 'File1.txt'), ($Path + 'File2.txt')

关于arrays - 两种创建数组的方式之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47138234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com