Object 在PowerShell中使用多个参数实现自己的方法
我想用一个接受多个参数的方法创建一个自定义对象。我已经设法添加了一个使用一个参数的方法,它似乎可以工作:Object 在PowerShell中使用多个参数实现自己的方法,object,powershell,Object,Powershell,我想用一个接受多个参数的方法创建一个自定义对象。我已经设法添加了一个使用一个参数的方法,它似乎可以工作: function createMyObject () { $instance = @{} add-member -in $instance scriptmethod Foo { param( [string]$bar = "default" ) echo "in Foo( $bar )" } $instance } $
function createMyObject () {
$instance = @{}
add-member -in $instance scriptmethod Foo {
param( [string]$bar = "default" )
echo "in Foo( $bar )"
}
$instance
}
$myObject = createMyObject
但是每次我尝试添加一个带有两个参数的方法时,只需将另一个[string]$secondParam
-子句添加到方法的param部分,即调用
$myObject.twoParamMethod( "firstParam", "secondParam" )
不起作用。在我的语言中,错误消息表示“不可能将索引应用于空数组”
有什么提示吗?谢谢 类似的东西似乎可以工作(至少在PowerShell v4中是如此) 可以这么说,我做到了:
[PS] skip-matches> $myObject.Baz("Junk","Stuff")
in Baz( Junk, Stuff )
[PS] skip-matches> $myObject.Baz()
in Baz( default, auto )
只是添加了一个我开始工作的版本
function Demo ([ref]$var) {
$var.Value = 5
$var
}
[psobject] $changeMe = New-Object psobject
$changeMe = 0
$changeMe # Prints 0
$v = Demo([ref]$changeMe)
$changeMe # Prints 0, should print 5
若要为对象指定值,需要使用引用对象的“值”特性。另外,我实例化了一个对象实例并传递了对该实例的引用。你说的“像这样思考”是什么意思?这正是我正在尝试的代码。你能展示一下你是如何在实例上调用这个方法的吗?@Sh4pe,我更新了我的答案,包括我是如何测试代码的。我现在还不清楚你想用这个做什么,但这让我想起了过去的一个例子。如果您对类似的实现感兴趣的话,也许可以看一下。我正在尝试定义具有多个参数的方法。。。
function Demo ([ref]$var) {
$var.Value = 5
$var
}
[psobject] $changeMe = New-Object psobject
$changeMe = 0
$changeMe # Prints 0
$v = Demo([ref]$changeMe)
$changeMe # Prints 0, should print 5