2014-06-13 2 views
1

나는 뭔가가 정말로 명백하게 틀렸다고 생각한다. 그래서 내가 조금 두껍다면 나를 용서해라.함수에 전달 된 클로저를 호출하는 방법은 무엇입니까?

클로저에 대한 모든 예제는 클로저를 배열 맵 함수에 전달하기위한 것입니다. 나는

이것은 내가 도와주세요 잘못

을 뭐하는 거지에

func closureExample(numberToMultiply : Int, myClosure : (multiply : Int) -> Int) -> Int 
{ 
    // This gets a compiler error because it says myClosure is not an Int 
    // I was expecting this to do was to invoke myClosure and return an Int which 
    // would get multiplied by the numberToMultiply variable and then returned 
    return numberToMultiply * myClosure 
} 

내가 완전히 난처한 상황에 빠진을 시도하고있는 무슨이다 클로저를 취 내 자신의 함수를 작성하려면!

+0

try'return numberToMultiply * myClosure (1)' – Jack

답변

2

모든 기능을 호출하는 것과 같은 방식으로 ().

return numberToMultiply * myClosure(multiply: anInteger) 

동작하는 예제 :

func closureExample(numberToMultiply : Int, myClosure : (multiply : Int) -> Int) -> Int { 
    return numberToMultiply * myClosure(multiply: 2) 
} 

closureExample(10, { num in 
    return 2*num 
}) // 40 
+0

myClosure (2)가 아니라 myClosure (곱하기 : 2)라는 변수 이름을 가졌으므로 문법적으로 정확합니다. 이걸로 내가 뭘 생각하는지 모르겠다. 함수가 호출 될 때 전달 된 변수를 캡슐화하기 위해 클로저가 전달 될 것으로 예상했다. 그것이 사실이 아니었다는 것이 분명해졌습니다. – rideintothesun

+0

나는 놀이터에서 그것을 달렸을 때, 단지 확실하다고 덧붙였습니다. –

+0

나는 또한 응답 한 모든 사람들에게 감사 드리고 싶었습니다. 이 사이트의 회원은 항상 도움이됩니다. 놀이터에서 조금이라도 찾는 사람이 있습니까? – rideintothesun

0

당신은 매개 변수의 이름으로라는 함수와 같은 폐쇄 매개 변수를 처리합니다. myClosurenumberToMultiply에서 작동하는 데 필요한 폐쇄, 그래서 당신이 원하는 : 당신의 폐쇄 numberToMultiply를 전달하고 반환 값을 반환합니다

return myClosure(numberToMultiply) 

.

관련 문제