我在PowerShell中定义了一个函数并尝试调用它,如下所示。
function foo([Int32] $a, [Int32] $b)
{
}
foo(0,0)
当我这样做时,我收到以下错误。
foo : Cannot process argument transformation on parameter 'a'. Cannot convert the "System.Object[]" value of type "System.Object[]" to type
"System.Int32".
At line:1 char:4
+ foo <<<< (0,0)
+ CategoryInfo : InvalidData: (:) [foo], ParameterBindin...mationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,foo
如果我将函数更改为只接受单个参数,如下所示,它可以正常工作。
function foo([Int32] $a)
{
}
foo(0)
或者,如果我删除了类型信息,它也可以如下所示工作。
function foo($a, $b)
{
}
foo(0,0)
第一个版本出了什么问题?如何正确定义一个带有多个整数参数的函数?
编辑:有趣的是,以下调用确实有效。
foo 0 0
我更喜欢()s,但我想知道如何让它与它们一起工作。
答案 0 :(得分:9)
在powershell参数传递时没有括号尝试:
foo 0 0
操作
FOO(0,0)
您将对象数组作为第一个参数传递。
您可以传递数组,然后将每个值作为参数拆分到脚本中,但为什么要这样做?
答案 1 :(得分:0)
Function MyFunction ([int32]$arg1,[int32]$arg2)
{
$data= $arg1+$arg2
return $data
}
MyFunction 2 4