通过引用传递多个功能?

问题描述 投票:1回答:1

在PowerShell中,似乎不可能通过多个函数通过引用传递变量。有什么办法可以做到这一点?下面的代码不起作用:

function f1([ref]$out){
    f2 ([ref]$out)   
}

function f2([ref]$out){
    $out.Value = "f2out"
}

$refvar = "junk"

f1 ([ref]$refvar)
Write-Host $refvar

输出:

破烂
powershell pass-by-reference
1个回答
0
投票

功能f1f2期望将参考作为参数值。当参数值[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
© www.soinside.com 2019 - 2024. All rights reserved.