본문 바로가기

Swift 기초

Swift 중첩함수

반응형

Swift 중첩함수

중복함수 다이어그램

  • Swift 는 함수 내부에 또 다른 함수 생성 가능 (중첩함수)
  • 내부의 중첩된 함수는 바깥쪽 함수에 선언된 변수를 사용할 수 있다. (물론 외부함수의 인자에도 접근 가능)
  • 중첩함수의 호출은 함수 내부에서만 가능하다. ==> 내부적으로 은닉 가능.
  • 내부함수는 외부함수가 실행되는 순간 생성되고, 종료되는 순간 소멸된다.
  • 외부함수를 호출했을 때 내부함수를 반환하여 외부에서 사용하는 것도 가능하다. 

(값에 따라 다른 함수를 반환하는 것도 구현 가능)

 

함수 안에 함수를 선언한다는 것일 뿐, 함수 선언 방식은 동일하므로 일반적인 함수 작성 코드는 따로 작성하진 않겠다.

다만 내부 함수를 반환할 때 외부함수의 반환타입 명시 예시를 들자면 다음과 같다.

외부함수의 선언문:func IncDec(want:Int) -> ((Int) -> Int)

해석: Int형 매개변수를 인자로 IncDec 함수를 호출했을 때, Int형 인자를 받아 Int형을 반환하는 내부함수를 반환한다.

 

내부함수를 반환하여 밖에서 사용.

중첩함수(내부함수) 2개를 선언하여 IncDec 인자 값에 따라 내부 함수를 반환하여 사용하는 모습이다.

내부함수는 기본적으로 외부함수 내에서만 사용할 수 있지만, 이렇게 return으로 반환할 경우 외부함수 밖에서도 사용할 수 있다.

반응형

'Swift 기초' 카테고리의 다른 글

Swift 열거형 (Enum)  (2) 2019.03.30
Swift 클로저(Closure)  (0) 2019.03.30
Swift 제너릭 (Generic)  (0) 2019.03.27
Swift 함수 기초  (2) 2019.03.27
[Swift 기초] switch case 문  (0) 2019.03.16