Upload
kimdaeho
View
103
Download
2
Embed Size (px)
Citation preview
중첩 함수(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)함수 FuncA
var c : Float
중첩 함수 FuncB
retrun c + 1
파라매터 Void
retrun FuncB
중첩함수의 실행결과로 그 중첩함수를 반환하는 경우
(Int -> Int)
1개의 FuncB 형태(Int->Int)의 타입 반환
중첩 함수(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
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)
함수가 파라매터가 되서 함수를 전달하는 경우
Sorted Closure
• sorted function은 Swift에서 제공하는 배열 정렬 함수
• 배열 파라메터와 함수 파라메터가 필요
• 여기서 함수타입은 배열 파라메터와과 같은 타입의 변수 2개를 파라메터로 가지고 Bool타입을 반환한다
Sorted Closure
sorted Function은 함수에 sorted closure가 인자로 쓰여지기 때문에 swift 는 자동으로 그 함수가 sortclosure 라는 것을 추론 할 수 있기 때문에
(String, String) -> Bool 이라는 표현을 쓸 필요가 없다
Sorted Closure
???
shorthand argument name, $0은 첫번째로 들어온 인자 $1은 두번째로 들어온 인자를 뜻하며
이렇게 선언하면 인자를 선언할 필요가 없게 된다
참고 자료
• http://blog.naver.com/seotaji/220129425020
• http://blog.naver.com/sqlpro/220022591074