PowerShell中令人遗憾的一点是函数和脚本块采用动态作用域。
但另一件让我感到惊讶的事情是,在内部作用域中,变量表现为写时复制。
$array=@("g")
function foo()
{
$array += "h"
Write-Host $array
}
& {
$array +="s"
Write-Host $array
}
foo
Write-Host $array
输出结果为:
g s
g h
g
这使动态作用域变得稍微不那么痛苦。但是如何避免写时复制呢?