powershell-5.0 - 如何使用扩展 Powershell 对象的方法返回引用值?
问题描述
我正在尝试使用以下方法扩展 Powershell 对象
- 返回真或假以表示成功
- 通过引用输出一个值 (
[ref]
)
我在我的模块 MyExtensions.psm1
中。
Update-TypeData -TypeName [MyType] -MemberType ScriptMethod -memberName TryGetValue -force -value `
{
param(
$myInput,
[ref]$myOutput
)
try
{
# do something with $myInput
$myOutput = …
return $true
}
catch
{
return $false
}
}
目标是能够在脚本或另一个模块中编写:
Import-Module MyExtensions
$myInput = …
$value = $null
if($myTypeItem.TryGetValue($myInput, $value)
{
# I know that the $value is good
}
解决方案
通过引用使用参数(你只是错过了$myOutput.Value =""
)
function addition ([int]$x, [int]$y, [ref]$R)
{
$Res = $x + $y
$R.value = $Res
}
$O1 = 1
$O2 = 2
$O3 = 0
addition $O1 $O2 ([ref]$O3)
Write-Host "values from addition $o1 and $o2 is $o3"
这里有一个更完整的答案。
推荐阅读
- database - 互连 IT 搜索替换数据库 HTTP 问题
- java - 无法从 Spring-boot SQL 查询中读取结果
- reflection - 有没有办法在 OCaml 中获取值的类型,如 c# 或 java 的反射?
- javascript - react-native-navigation v2:获取当前路线
- javascript - 无法在 ios 上模拟 Nativescript hello world
- ansible - 我们可以忽略ansible中内容的格式并将其写入文件吗?
- android - 删除自定义对话框中的黑色边框或背景
- android - 在布局中不占据全屏
- salesforce - 如何在 Salesforce 中处理 HOLD 项目?
- dji-sdk - 是否可以从防撞摄像头(DJI 的立体摄像头)访问实时视频源?