2012-04-03 5 views
1

저는 PowerShell에서 함수를 정의하고 아래 표시된 것처럼 호출하려고합니다.2 정수 args 함수를 호출 할 때 오류가 발생했습니다.

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 

나는 그 (것)들을 선호하고 그 (것)들을 사용하기 위하여 얻는 방법 생각해보고있다. PowerShell을 매개 변수에

답변

9

괄호의 시도없이 전달됩니다

foo 0 0 

foo는 (0,0)는 첫 번째 매개 변수로 객체 배열을 전달하는

을하고.

배열을 전달한 다음 각 값을 스크립트 내에서 매개 변수로 분리 할 수 ​​있지만 그 이유는 무엇입니까?

+0

확인 감사합니다! 내가 C++에서 기어를 바꿔서 괄호를 포기할 필요가있는 것 같습니다 :) – Nerdtron

+5

BTW이 일반적인 잡았다는 (FAQ라고하는 데 사용되는) 태그 위키에 언급되어 있습니다 - http://stackoverflow.com/tags/powershell/info . –

+0

링크를 이용해 주셔서 감사합니다. – Nerdtron

0
Function MyFunction ([int32]$arg1,[int32]$arg2) 
{ 


    $data= $arg1+$arg2 
return $data 


} 

의 MyFunction 2 개 4

+0

이것은 arg를 int32로 변환하는 예제입니다 – bala

관련 문제