在PowerShell中,似乎不可能通过多个函数通过引用传递变量。有什么办法可以做到这一点?下面的代码不起作用:
function f1([ref]$out){
f2 ([ref]$out)
}
function f2([ref]$out){
$out.Value = "f2out"
}
$refvar = "junk"
f1 ([ref]$refvar)
Write-Host $refvar
输出:
破烂
功能f1
和f2
期望将参考作为参数值。当参数值[ref]$out
传递到f1
时,$out
现在是该函数范围内的引用。因此,您只需要将$out
传递到f1
范围内的已调用函数中即可。
function f1([ref]$out){
f2($out)
}
function f2([ref]$out){
$out.Value = "f2out"
}
$refvar = "junk"
f1([ref]$refvar)
$refvar
# Output
f2out
如果添加一些调试代码,您会在f1
中看到这种情况。
function f1([ref]$out){
$out.GetType()
$out
}
$refvar = 'junk'
f1([ref]$refvar)
# Output
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
False False PSReference`1 System.Management.Automation.PSReference
Value : junk