PowerShellで関数を定義し、以下のように呼び出そうとしています。2つの整数引数を持つ関数を呼び出すときにエラーが発生する
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
以下のように1つの引数だけを受け入れるように関数を変更した場合、正常に動作します。
function foo([Int32] $a)
{
}
foo(0)
また、タイプ情報を削除すると、次のようにも動作します。
function foo($a, $b)
{
}
foo(0,0)
最初のバージョンに問題がありますか?複数の整数引数を取る関数を正しく定義するにはどうすればよいですか?
編集:興味深いことに、次の呼び出しが機能します。
foo 0 0
私は()の方が好きで、それをどのように動作させるのかと思っています。 PowerShellのパラメータで
OK感謝!私はちょうどC + +からギアを切り替えて、かっこをあきらめる必要があるように見えます:) – Nerdtron
この一般的なgotchaは、タグwiki(よくある質問と呼ばれる)で言及されています - http://stackoverflow.com/tags/powershell/info 。 –
リンクありがとうございました。 – Nerdtron