我想用一个带有多个参数的方法创建一个自定义对象。我已经设法添加一个带有一个参数的方法,它似乎可以工作:
function createMyObject () {
$instance = @{}
add-member -in $instance scriptmethod Foo {
param( [string]$bar = "default" )
echo "in Foo( $bar )"
}
$instance
}
$myObject = createMyObject
但每次我尝试通过简单地在方法的param-section中添加另一个[string]$secondParam
- 子句来添加带有两个参数的方法时,调用
$myObject.twoParamMethod( "firstParam", "secondParam" )
不起作用。我语言中的错误消息表示“无法将索引应用于NULL数组”。
任何提示?谢谢!
答案 0 :(得分:5)
这样的东西似乎有用(至少在PowerShell v4中)......
add-member -in $instance scriptmethod Baz {
param( [string]$bar = "default", [string]$qux = "auto" )
echo "in Baz( $bar, $qux )"
}
要打电话,我做了:
[PS] skip-matches> $myObject.Baz("Junk","Stuff")
in Baz( Junk, Stuff )
[PS] skip-matches> $myObject.Baz()
in Baz( default, auto )
答案 1 :(得分:0)
只需添加我正在使用的版本。
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
要为对象指定值,需要使用引用对象的Value属性。此外,我实例化一个对象实例并传递对它的引用。