byt*_*ead 5 arrays powershell variable-assignment
我有一个创建数组的程序示例,然后尝试将该数组的值多次分配到另一个数组中作为多维数组.
$a =@(0,0,0)
$b = @($a,$a,$a)
$b[1][2]=2
$b
'And $a is changed too:'
$a
Run Code Online (Sandbox Code Playgroud)
输出是:
PS E:\Workarea> .\what.ps1
0
0
2
0
0
2
0
0
2
And $a is changed too:
0
0
2
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中,变量实际上指向原始变量.这是非常意外的行为.虽然我从来没有在C编程中使用过很多工会,但是人们可以做到这一点相当简洁.但我想要一种方法来实际只是分配值,而不是变量.
$b = @($a.clone(),$a.clone(),$a.clone())
Run Code Online (Sandbox Code Playgroud)
我想会工作,但有些东西告诉我,可能会有一些比这更优雅的东西.
感谢您的投入.
这是Windows 7 64位下的PowerShell 2.0.
要分配$ato的值$b而不是对 的引用$a,您可以将变量包装在 中$()。中的任何内容在$()命令中使用之前都会进行评估,因此$($a)等效于0, 0, 0.
$a =@(0,0,0)
$b = @($($a),$($a),$($a))
$b[1][2]=2
$b
'$a is not changed.'
$a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5944 次 |
| 最近记录: |