SlideShare a Scribd company logo
8. Swift 기초
- 중첩함수
창원대학교 정보통신공학과 박동규
2016. 1
중첩 함수(Nested Function)
• Swift는 C/C++와는 달리 함수의 내부에 함수를 만들 수
있다.(중첩함수)
• 내부의 중첩된 함수는 바깥쪽(중괄호 넘어) 함수에 선언
된 변수를 사용할 수 있다.
• 중첩함수의 호출은 함수 내부에서만 가능하므로 내부적
으로 은닉이 가능하다
중첩 함수(Nested Function)
함수 funcA: 외부함수라 함
중첩 함수 funcB: funcA의 내부함수
중첩 함수(Nested Function)
함수 funcA: 외부함수라 함
중첩 함수 funcB: funcA의 내부함수
() -> Int
중첩 함수(Nested Function)
함수 funcA: 외부함수라 함
중첩 함수 funcB: funcA의 내부함수
() -> Int
var a = 10
중첩 함수(Nested Function)
함수 funcA: 외부함수라 함
중첩 함수 funcB: funcA의 내부함수
() -> Int
var a = 10
a = a + 10
중첩 함수(Nested Function)
함수 funcA: 외부함수라 함
중첩 함수 funcB: funcA의 내부함수
() -> Int
return a
var a = 10
a = a + 10
중첩 함수(Nested Function)
함수 funcA: 외부함수라 함
중첩 함수 funcB: funcA의 내부함수
() -> Int
return a
funcB는 외부함수 funcA의 값 a을
읽어(캡쳐) 처리할 수 있다.
내부함수는 외부함수가 실행되는
순간 생성되고, 종료되는 순간
소멸된다
var a = 10
a = a + 10
중첩 함수(Nested Function)
중첩 함수(Nested Function)
중첩함수 funcB()는 funcA()의
내부 변수 a를 읽고 수정할 수 있다
중첩 함수(Nested Function)
• 중첩함수를 반환하여 이 함수를 함수 외부에서 사용할 수
도 있다
중첩 함수(Nested Function)
• 중첩함수를 반환하여 이 함수를 함수 외부에서 사용할 수
도 있다
중첩 함수(Nested Function)
• 중첩함수를 반환하여 이 함수를 함수 외부에서 사용할 수
도 있다
makeInc1() 함수는 addOne() 함수를 반환
중첩 함수(Nested Function)
• 중첩함수를 반환하여 이 함수를 함수 외부에서 사용할 수
도 있다
makeInc1() 함수는 addOne() 함수를 반환
중첩 함수(Nested Function)
• 중첩함수를 반환하여 이 함수를 함수 외부에서 사용할 수
도 있다
makeInc1()의 반환값을 참조하는 increment 변수
increment 변수는 중첩함수 addOne()를 참조한다
makeInc1() 함수는 addOne() 함수를 반환
makeInc2는 반환타입이
()->Int인 함수
중첩 함수(Nested Function)
또한 amount라는 Int형 매개변수를 가짐
그리고 함수 내부에 runningTotal이라는 Int 변수를 가진다
중첩 함수(Nested Function)
중첩 함수-변수의 참조 캡쳐
runningTotal 변수는 호출될때마다
amount만큼 증가되는데
runningTotal 변수를 바깥함수로부터
참조 캡쳐하였기 때문이다. 이 변수는
incFive, incTen에 의해 각각 다른
기억장소에 캡쳐되어 있다
중첩 함수-변수의 참조 캡쳐
내부함수 참조 변수
• 위의 예에서 내부함수 incrementor()는 외부함수
makeInc2()가 호출될때 생성되어 외부함수의 호출이 종
료되면 소멸하도록 설계되었다.
• 그러나 incFive, incTen이라는 외부참조변수가
incrementor()를 참조하여 생명이 유지되는 것을 확인할
수 있다.
• 외부에서 참조하는 변수나 상수가 있을 경우 내부함수는
참조되어 생명이 유지된다
중첩 함수(Nested Function)
함수 FuncA
파라미터 : 1개의 배열, 1개의 FuncB(Int -> Bool)
retrun Bool(true or false)
함수 FuncC(FuncB를 엑세스 한 파라메터)
(Int->Bool)
반환값 : Bool형을 반환
retrun Bool(True of false)
중첩 함수(Nested Function)
함수 FuncA
파라미터 : 1개의 배열, 1개의 FuncB(Int -> Bool)
retrun Bool(true or false)
함수 FuncC(FuncB를 엑세스 한 파라메터)
(Int->Bool)
반환값 : Bool형을 반환
retrun Bool(True of false)
함수 FuncB
(Int->Bool)
retrun Bool(true or false)
중첩 함수(Nested Function)
함수 FuncA
파라미터 : 1개의 배열, 1개의 FuncB(Int -> Bool)
retrun Bool(true or false)
함수 FuncC(FuncB를 엑세스 한 파라메터)
(Int->Bool)
반환값 : Bool형을 반환
retrun Bool(True of false)
함수 FuncB
(Int->Bool)
retrun Bool(true or false)
중첩 함수(Nested Function)
함수 FuncA
파라미터 : 1개의 배열, 1개의 FuncB(Int -> Bool)
retrun Bool(true or false)
함수 FuncC(FuncB를 엑세스 한 파라메터)
(Int->Bool)
반환값 : Bool형을 반환
retrun Bool(True of false)
함수 FuncB
(Int->Bool)
retrun Bool(true or false)
함수가 매개변수가 되어
전달되는 경우
중첩 함수(Nested Function)
중첩 함수(Nested Function)
중첩 함수(Nested Function)
함수 FuncA
중첩 함수(Nested Function)
함수 FuncA
중첩 함수(Nested Function)
함수 FuncA
중첩 함수(Nested Function)
함수 FuncA
중첩 함수(Nested Function)
함수 FuncB
함수 FuncA
중첩 함수(Nested Function)
함수 FuncB
함수 FuncA
중첩 함수(Nested Function)
함수 FuncB
중첩 함수 condition
함수 FuncA
중첩 함수(Nested Function)
함수 FuncB
중첩 함수 condition
함수 FuncA
중첩 함수(Nested Function)
함수 FuncB
중첩 함수 condition
함수 FuncA
condition은 함수의 매개변수
Int형을 매개변수로 사용하고 Bool을 반환
중첩 함수(Nested Function)
함수 FuncB
중첩 함수 condition
함수 FuncA
condition은 함수의 매개변수
Int형을 매개변수로 사용하고 Bool을 반환
정리
• Swift는 함수의 내부에 함수를 만들 수 있다.이를 중첩함
수라고 한다
• 내부의 중첩된 함수는 바깥쪽(중괄호 넘어) 함수에 선언
된 변수를 사용할 수 있다.
• 중첩함수의 호출은 함수 내부에서만 가능하므로 내부적
으로 은닉이 가능하다는 장점이 있다.
• 함수는 매개변수로도 사용될 수 있고 반환타입으로 사용
할 수 있다
감사합니다
dongupak@gmail.com

More Related Content

PDF
5 swift 기초함수
PDF
Function & Closure about Swift
PDF
6 swift 고급함수
PDF
[C++ Korea 2nd Seminar] C++17 Key Features Summary
PPTX
PDF
Javascript - Function
PPTX
C++11
PPTX
Java8 람다
5 swift 기초함수
Function & Closure about Swift
6 swift 고급함수
[C++ Korea 2nd Seminar] C++17 Key Features Summary
Javascript - Function
C++11
Java8 람다

What's hot (20)

PDF
Javascript 교육자료 pdf
PDF
Modern C++ 프로그래머를 위한 CPP11/14 핵심
PDF
Swift3 subscript inheritance initialization
PPTX
C++ 11 에 대해서 쉽게 알아봅시다 1부
PDF
Swift3 generic
PPTX
자바스크립트 함수
PDF
Swift3 typecasting nested_type
PDF
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
PDF
9 swift 클로저1
PPT
Boost라이브러리의내부구조 20151111 서진택
DOCX
Javascript 완벽 가이드 정리
PPTX
C#을 사용한 빠른 툴 개발
PDF
6 function
PDF
Start IoT with JavaScript - 6.함수
PDF
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
PPTX
More effective c++ chapter1,2
PDF
2013 C++ Study For Students #1
PDF
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
PPTX
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
PPTX
Gpg gems1 1.3
Javascript 교육자료 pdf
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Swift3 subscript inheritance initialization
C++ 11 에 대해서 쉽게 알아봅시다 1부
Swift3 generic
자바스크립트 함수
Swift3 typecasting nested_type
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
9 swift 클로저1
Boost라이브러리의내부구조 20151111 서진택
Javascript 완벽 가이드 정리
C#을 사용한 빠른 툴 개발
6 function
Start IoT with JavaScript - 6.함수
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
More effective c++ chapter1,2
2013 C++ Study For Students #1
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Gpg gems1 1.3
Ad

Viewers also liked (11)

PDF
class vs struct
PDF
Class vs struct for Swift
PDF
Struct vs Class in Swift
PDF
SwiftにおけるClassとStructの使い分け
PDF
Swift 3 Programming for iOS : class and structure
PDF
Swift 3 Programming for iOS: Function
PDF
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
PDF
iOS for Android Developers (with Swift)
PDF
Learning.... Swift functions!
PDF
Swift Introduction
PDF
Swift Programming Language
class vs struct
Class vs struct for Swift
Struct vs Class in Swift
SwiftにおけるClassとStructの使い分け
Swift 3 Programming for iOS : class and structure
Swift 3 Programming for iOS: Function
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
iOS for Android Developers (with Swift)
Learning.... Swift functions!
Swift Introduction
Swift Programming Language
Ad

Similar to 8 swift 중첩함수 (20)

PDF
[Swift] Functions
PDF
Swift의 함수와 메소드
PPTX
Lua 문법 -함수
PPTX
튜터링 #10 20120416
PDF
함수
PDF
[Why Programs Fail] Deducing Errors, 오류 연역
PDF
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
PPT
Multithread programming 20151206_서진택
PDF
Pure Function and Rx
PPTX
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
PPTX
[170410 3주차]C언어 A반
PPTX
C언어 세미나 - 함수
PPTX
Startup JavaScript 6 - 함수, 스코프, 클로저
PPTX
R 프로그래밍 기본 문법
PPTX
Let's Go (golang)
PDF
C 언어 스터디 02 - 제어문, 반복문, 함수
PPTX
자바스크립트 기초문법~함수기초
PDF
[SwiftStudy 2016] 3장. 함수
PPTX
튜터링 #9 20120409
PPTX
파이썬+함수이해하기 20160229
[Swift] Functions
Swift의 함수와 메소드
Lua 문법 -함수
튜터링 #10 20120416
함수
[Why Programs Fail] Deducing Errors, 오류 연역
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
Multithread programming 20151206_서진택
Pure Function and Rx
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
[170410 3주차]C언어 A반
C언어 세미나 - 함수
Startup JavaScript 6 - 함수, 스코프, 클로저
R 프로그래밍 기본 문법
Let's Go (golang)
C 언어 스터디 02 - 제어문, 반복문, 함수
자바스크립트 기초문법~함수기초
[SwiftStudy 2016] 3장. 함수
튜터링 #9 20120409
파이썬+함수이해하기 20160229

More from Changwon National University (20)

PDF
생성인공지능둘러보기.pdf
PDF
2011 app center Changwon National Univ.
PDF
인공지능의 파도가 온다
PDF
Mobile Healthcare Application
PDF
PDF
알아두면 편리한 macOS 에디터 단축키와 기능
PDF
키보드 기호의 이름 알아보기(한국어, 영어)
PDF
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
PDF
20 2 강의를 마치며
PDF
20 1 코딩스타일
PDF
18 2 파이썬표준라이브러리
PDF
18 1 파이썬패키지
PDF
17 2 필터함수와 맵함수
PDF
17 1 람다함수
PDF
16 1 상속과super()
PDF
15 2 클래스정의와self
PDF
14 4 슬라이싱
PDF
14 3 리스트함수
PDF
14 1 리스트의 메소드
생성인공지능둘러보기.pdf
2011 app center Changwon National Univ.
인공지능의 파도가 온다
Mobile Healthcare Application
알아두면 편리한 macOS 에디터 단축키와 기능
키보드 기호의 이름 알아보기(한국어, 영어)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
20 2 강의를 마치며
20 1 코딩스타일
18 2 파이썬표준라이브러리
18 1 파이썬패키지
17 2 필터함수와 맵함수
17 1 람다함수
16 1 상속과super()
15 2 클래스정의와self
14 4 슬라이싱
14 3 리스트함수
14 1 리스트의 메소드

8 swift 중첩함수