SlideShare a Scribd company logo
Function & Closure
about Swift
창원대학교 정보통신공학과 Mobile-X 김대호
지도교수 : 박동규
2015.1.13
목차
• 함수(Function)
• 중첩함수(Nested Function)
• 클로저(Closure)
함수(Function)
• 함수란 하나 이상의 기능이 구현된 집합체
• 프로그래밍을 하면서 없어서는 안되는 중요한 기능
함수(Function)
• 함수의 구성은 함수이름 파라매터 반환값 함수구현 부분
으로 구성되어 있다
• Swift에서 함수의 정의는 func 키워드를 사용하여 구현
한다
함수(Function)
함수(Function)
함수 이름
함수(Function)
파라매터 이름
함수(Function)
반환 타입
함수(Function)
함수 구현
함수(Function)
반환값 리턴
함수(Function)
• Swift에서 함수는 직관적인 구문으로 함수를 구현 한다.
• Tuple을 이용하여 값을 한꺼번에 값을 return 할 수 있다.
함수(Function)
파라매터 : 2개의 String
반환값 : 1개의 String
함수(Function)
파라매터 : 1개의 String , 1개의 Int
반환값 : None
함수(Function)
파라매터 : None
반환값 : None
함수(Function)
파라매터 : 1개의 Int
반환값 : 2개의 Int
Tuple을 이용하여 두개의 값을
한번에 return 시켰다.
함수(Function)
• Variadic 파라미터 : 함수의 파라매터를 제한 없이 계속
사용가능함
• 똑같은 타입의 배열로 만들어진 파라매터를 불러옴
함수(Function)
numbers 는 Int 형 타입의 배열(Array)
numbers 의 각각의 요소 값인
number가 sum 변수에 더해짐
중첩 함수(Nested Function)
• Swift는 다른 함수의 내부에 함수 중첩이 가능하다
• 내부의 중첩된 함수는 바깥쪽(중괄호 넘어) 함수에 선언
된 변수를 사용할 수 있다.
• 중첩함수의 호출은 함수 내부에서 만 가능하므로 내부적
으로 은닉이 가능하다
중첩 함수(Nested Function)
함수 FuncA
중첩 함수 FuncB
(Void -> Int)
retrun a
FuncB는외부 FuncA의 값 a을
처리할 수 있다
(Void -> Void)
var a = 10
a = a + 10
10
중첩 함수(Nested Function)
add()함수는 returnAdd()의 값 y을
처리할 수 있다
중첩 함수(Nested Function)
함수 FuncA
var c : Float
중첩 함수 FuncB
retrun c + 1
파라매터 Void
retrun FuncB
중첩함수의 실행결과로
그 중첩함수를 반환하는 경우
(Int -> Int)
1개의 FuncB 형태(Int->Int)의 타입 반환
중첩 함수(Nested Function)
makeIncremetner()의 return 값을 엑세스 하는
increment 변수
AddOne()
중첩 함수(Nested Function)
함수 FuncA
var c : Float
중첩 함수 FuncB
retrun c + 1
파라매터 Void
retrun FuncB
(Int -> Int)
1개의 FuncB 형태(Int->Int)의 타입 반환
increment
중첩 함수(Nested Function)
함수 FuncA
중첩 함수 FuncB
retrun b
파라매터 Int a
retrun FuncB
중첩함수의 실행결과로
그 중첩함수를 반환하는 경우
(void -> Int)
1개의 FuncB 형태(void->Int)의 타입 반환
var b : Float
b += a
makeIncrementor는 반환타입이
()->Int인 함수
중첩 함수(Nested Function)
또한 amount라는 Int형 파라미터를 가짐
그리고 함수 내부에 runningTotal이라는 Int 변수를 선언
중첩 함수(Nested Function)
incrementor의 경우 인자가 없지만 runntingTotal과
amount변수를 바깥함수에서 참조함 (캡쳐)
중첩 함수(Nested Function)
runningTotal 변수는 호출될때마다
amount만큼 증가 되어지는데
,runningTotal변수를 바깥함수로부터
참조 캡쳐하였기 때문임
중첩 함수(Nested Function)
중첩 함수(Nested Function)
함수 FuncA
함수 FuncB
파라메터 1개의 배열, 1개의 FuncB(Int -> Bool)
retrun Bool(True of false)
함수 FuncC(FuncB를 엑세스 한 파라매터)
(Int->Bool)
Bool값을 반환
(Int->Bool)
retrun Bool(True of false) retrun Bool(True of false)
함수가 파라매터가 되서
함수를 전달하는 경우
중첩 함수(Nested Function)
함수 FuncB
함수 FuncC
함수 FuncA
배열 중에서 10보다 작으면 ture 아니면 false
클로져(Closure)
• 코드 내부에서 전달하고 사용할 수 있는 독립된 기능 블
록
클로져(Closure)
• 코드 내부에 일시적으로 생성되어 동작하고 인자가 동적
으로 복사 되어 전달된다
• 중첩함수, 무명함수 역시 클로저의 종류 중 일부이다.
클로져(Closure)
파라메터 리턴타입
타입과 상태를 구분 짓는
구문 “in”
상태”
Sorted Closure
• sorted function은 Swift에서 제공하는 배열 정렬 함수
• 배열 파라메터와 함수 파라메터가 필요
• 여기서 함수타입은 배열 파라메터와과 같은 타입의 변수
2개를 파라메터로 가지고 Bool타입을 반환한다
Sorted Closure
여기서 대문자 C는
Collection(배열, 딕셔너리)를 뜻한다
Sorted Closure
names String배열과 배열 요소와 타입이 같은
(String,String) -> Bool의 타입의 함수를
sorted 함수 파라미터로 쓰인다
Sorted Closure
Closure expression syntax : 클로저 표현식
Sorted Closure
sorted Function은 함수에 sorted closure가 인자로 쓰여지기 때문에
swift 는 자동으로 그 함수가 sortclosure 라는 것을 추론 할 수 있기 때문에
(String, String) -> Bool 이라는 표현을 쓸 필요가 없다
Sorted Closure
Sorted Closure
???
shorthand argument name,
$0은 첫번째로 들어온 인자 $1은 두번째로 들어온 인자를 뜻하며
이렇게 선언하면 인자를 선언할 필요가 없게 된다
Trailing Closure
• 어떤 함수 마지막 파라매터가 클로저 일때, 그 클로저 표
현식이 길다면 호출 할때 괄호 안에 넣는대신 괄호를 닫
고 표현 할 수있다.
Trailing Closure
FuntionA(A,B,…,{Closure express})
FuntionA(A,B,…) {Closure express}
Trailing Closure
Thank you
참고 자료
• http://blog.naver.com/seotaji/220129425020
• http://blog.naver.com/sqlpro/220022591074

More Related Content

PDF
6 swift 고급함수
PDF
5 swift 기초함수
PDF
8 swift 중첩함수
PDF
Java8 & Lambda
PDF
Java 8 api :: lambda 이용하기
PDF
Lambda 란 무엇인가
PPTX
Java8 람다
PDF
9 swift 클로저1
6 swift 고급함수
5 swift 기초함수
8 swift 중첩함수
Java8 & Lambda
Java 8 api :: lambda 이용하기
Lambda 란 무엇인가
Java8 람다
9 swift 클로저1

What's hot (20)

PDF
자바8 스트림 API 소개
PDF
Reverse Engineering 2015.02.09
PDF
알고리즘 시각화 라이브러리 ipytracer 개발기
PPTX
자바 8 학습
PDF
Swift3 generic
PDF
C++에서 Objective-C까지
PDF
6 function
PDF
나에 첫번째 자바8 람다식 지앤선
PPTX
Parallel objects
PPTX
C++11
PDF
씹고 뜯고 맛보고 즐기는 스트림 API
PDF
모두의 JIT 컴파일러
PDF
Javascript - Function
PPTX
Just java
PDF
[C++ Korea 2nd Seminar] C++17 Key Features Summary
PPTX
Kotlin with fp
PDF
Swift3 subscript inheritance initialization
PPTX
Cpp에서 활용해보는 Lambda식
PPTX
C++ 11 에 대해서 쉽게 알아봅시다 1부
PDF
Swift3 typecasting nested_type
자바8 스트림 API 소개
Reverse Engineering 2015.02.09
알고리즘 시각화 라이브러리 ipytracer 개발기
자바 8 학습
Swift3 generic
C++에서 Objective-C까지
6 function
나에 첫번째 자바8 람다식 지앤선
Parallel objects
C++11
씹고 뜯고 맛보고 즐기는 스트림 API
모두의 JIT 컴파일러
Javascript - Function
Just java
[C++ Korea 2nd Seminar] C++17 Key Features Summary
Kotlin with fp
Swift3 subscript inheritance initialization
Cpp에서 활용해보는 Lambda식
C++ 11 에 대해서 쉽게 알아봅시다 1부
Swift3 typecasting nested_type
Ad

Viewers also liked (7)

PDF
Swift(var & let, tuple, optional binding)
PDF
Swift 세미나
PPTX
단순 Linked list
PDF
How to deploy oVirt using Nested KVM environment?
PPTX
한국전력 신고 '전기안전신고' 앱 업데이트 개선
PDF
swift를 이용한 카카오링크 만들기
PPTX
김대호 포트포리오
Swift(var & let, tuple, optional binding)
Swift 세미나
단순 Linked list
How to deploy oVirt using Nested KVM environment?
한국전력 신고 '전기안전신고' 앱 업데이트 개선
swift를 이용한 카카오링크 만들기
김대호 포트포리오
Ad

Similar to Function & Closure about Swift (20)

PDF
[Swift] Functions
PPTX
파이썬 함수 이해하기
PPTX
Gpg gems1 1.3
PPTX
파이썬+함수 데코레이터+이해하기 20160229
PDF
Pure Function and Honest Design
PPT
헷갈리는 자바스크립트 정리
PPTX
자바스크립트 함수
PPTX
C언어 세미나 - 함수
PDF
함수적 사고 2장
PDF
Start IoT with JavaScript - 6.함수
PPTX
Lua 문법 -함수
PPTX
파이썬+함수이해하기 20160229
PDF
키트웍스_발표자료_김경수functional_programming240920.pdf
PDF
자바8 람다식 소개
PDF
Functional Kotlin makes Kotlin functional
PDF
Java8 - Oracle Korea Magazine
PDF
Java jungsuk3 ch14_lambda_stream
PPTX
Macro & compilation
PPTX
Processing 4th Class: Function
PPTX
강의자료 2
[Swift] Functions
파이썬 함수 이해하기
Gpg gems1 1.3
파이썬+함수 데코레이터+이해하기 20160229
Pure Function and Honest Design
헷갈리는 자바스크립트 정리
자바스크립트 함수
C언어 세미나 - 함수
함수적 사고 2장
Start IoT with JavaScript - 6.함수
Lua 문법 -함수
파이썬+함수이해하기 20160229
키트웍스_발표자료_김경수functional_programming240920.pdf
자바8 람다식 소개
Functional Kotlin makes Kotlin functional
Java8 - Oracle Korea Magazine
Java jungsuk3 ch14_lambda_stream
Macro & compilation
Processing 4th Class: Function
강의자료 2

Function & Closure about Swift