powershell - 通过多个函数通过引用传递?
问题描述
在 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
现在是该函数范围内的引用。因此,您只需要传入's 范围$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
推荐阅读
- javascript - Firebase firestore & Express - 构建 json 获取嵌套文档
- dialogflow-es - DialogFlow 集成 Tap 丢失
- c - #包括
问题(Visual Studio 代码) - sql - DELETE 语句与 REFERENCE 约束“FK_BlogCommentReply_BlogCommentId”冲突
- algorithm - 算法复杂度:时间和空间
- python - [aws-eks]如何为使用 cluster.add_nodegroup_capacity 创建的 ec2 实例命名
- java - 在 Spring Boot 中,我们可以通过 @PathVariable 或 @RequestParam 之类的 URL 将锚标记作为变量传递吗?
- javascript - 同时在数据库 MONGODB 的两个集合中通过电子邮件地址搜索用户
- java - Spring Boot 应用程序属性 @Value
- angular - “mat-tab-nav-bar”中“mat-group”当前选项卡下的行的功能(Angular)