2015-02-03 9 views
0

최근 Powershell에서 교육을 받았고 일반적으로 X = Foo (Bar (Hello ("World"))의 표준 중첩 함수 호출 구문을 만드는 복잡한 powershell 함수에서 간단한 데이터 형식을 반환 할 수 없음을 알게되었습니다) 불가능/실용적. PowerShell 솔루션은 x = Hello "World"와 같이 파이핑을 사용합니다. 바 | 푸. 나는이 구문상의 차이가 실제적인 의미에 대해 궁금해했다. 우리는 궁극적으로 중첩 된 함수 호출을 실행할 수 없기 때문에 유용한 언어 구문을 풀어 낼 수 있습니까?파이프와 중첩 된 함수 호출

답변

0

Powershell에서 여전히 중첩 기능을 사용할 수 있습니다.

Function Foo { "$($args[0])!" } 
Function Bar { $args[0].ToUpper() } 
Function Hello { "Hello $($args[0])" } 

Foo (Bar (Hello "World")) 

HELLO WORLD! 
+0

네,하지만 Bar와 Foo에 전달하는 것은 무엇입니까? 앞의 함수에서 작성된 모든 함수 호출에서 반환 된 모든 값을 보유한 powershell에 의해 생성 된 객체입니다. 이러한 객체는 구현에서 구현까지 본질적으로 다릅니다. Foo가 Bar에 의해 생성 된 객체를 항상 가져 오는 것은 아니므로 신뢰할 수있는 방법으로 참조 할 수 있습니까? –

+0

모든 함수에 인수를 전달하는 것과 다르지 않습니다. 함수는 입력을 위해 특정 객체 유형을 기대하도록 설계됩니다. 그것이 입력 형식을 얻지 못하면 그것을 위해 설계되지 않았습니다, 그것은 오류를 던질 것입니다. 파이프 라인은 개체의 단일 속성을 매개 변수로 바인딩합니다. 객체를 매개 변수로 전달하면 함수에서 해당 속성을 명시 적으로 참조해야하지만 중첩 함수 호출을 허용하지는 않습니다. – mjolinor

+0

귀하의 기능은 단순하며 단일 문자열로 구성되며 다른 기능 호출을하지 않습니다. 필자는 특히 더 복잡한 함수를 생각하고 있는데 이들은 여러 함수 호출을하지만 궁극적으로 간단한 데이터 형식을 반환해야합니다. –