我正在尝试使用高阶函数来完成某个任务,但是似乎作用域不像我预期的那样工作。代码如下:
function DoSomething($scriptBlock, $message) {
# if not only running a check, run the given code
if ($shouldRunCheck) {
return $scriptBlock.Invoke()
}
Write-Host $message -foreground cyan
# write $message to file
}
这似乎很好用,但是当我调用它时,我似乎无法将变量保存到脚本块外部。
$myArray = @()
$myArray += 'test 1'
DoSomething {
write-host $myArray # test 1
$myArray += 'test 2'
write-host $myArray # test 2
}
write-host $myArray # test 1
$myArray += 'test 3'
write-host $myArray # test 1 test 3
基本上,我需要在回调函数中向数组变量添加内容,但它似乎只是像只读变量一样重写了变量?
([Ref]$myArray).Value += 'test 2'
这个选项是一个不错的选择。 - Jon Allen