Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- beforePopState
- ios
- next.js
- reactnavigation
- 약타입
- 약타입언어
- 동적언어
- 스위프트
- 17681
- DelayInput
- reactnative android
- 데이터타입함수
- 72410
- 옵셔널
- 리액트네이티브
- 프로그래머스
- 비반환함수
- 함수형프로그래밍
- 중첩함수
- multiline
- replacingOccurrences
- JavaScript
- textinput
- SWIFT
- 나를부르는숲
- ReactNative
- lineending
- switch구문
- Server-Side-Rendering
- client-side-rendering
Archives
- Today
- Total
으니의 개발로그
[Swift] 함수(5) - 중첩 함수 본문
[Swift] 함수(5) - 중첩 함수
이 글은 Swift 프로그래밍 책을 읽고 요약한 내용입니다.
함수의 중첩은 함수 안에 함수를 넣을 수 있다는 의미이다. 함수 안의 함수로 구현된 중첩 함수는 상위 함수의 블록 내부에서만 함수를 사용할 수 있다. 그렇다고 중첩 함수를 아예 외부에서 사용할 수 없는 것은 아니다. 함수에서 하나의 반환 값으로 중첩 함수를 반환하면 밖에서도 사용할 수 있다.
typealias MoveFunc = (Int) -> Int
func goRight(_ currentPosition: Int) -> Int {
return currentPosition + 1
}
func goLeft(_ currentPosition: Int) -> Int {
return currentPosition - 1
}
func functionForMove(_ shouldGoLeft: Bool) -> MoveFunc {
return shouldGoLeft ? goLeft : goRight
}
var position: Int = 3 // 현 위치
// 현 위치가 0보다 크므로 전달되는 인자 값은 true가 됨
// 그러므로 goLeft(_:) 함수가 할당될 것이다.
let moveToZero: MoveFunc = functionForMove(position > 0)
print("원점으로 갑시다.")
// 원점에 도착하면(현 위치가 0이면) 반복문이 종료된다.
while position != 0 {
print("\(position)...")
position = moveToZero(position)
}
print("원점 도착!")
/*
원점으로 갑시다.
3...
2...
1...
원점 도착!
*/
위의 코드를 중첩 함수를 사용해서 나타낸 코드
typealias MoveFunc = (Int) -> Int
func functionForMove(_ shouldGoLeft: Bool) -> MoveFunc {
func goRight(_ currentPosition: Int) -> Int {
return currentPosition + 1
}
func goLeft(_ currentPosition: Int) -> Int {
return currentPosition - 1
}
return shouldGoLeft ? goLeft : goRight
}
var position: Int = -4 // 현 위치
// 현 위치가 0보다 작으므로 전달되는 인자 값은 false가 됨
// 그러므로 goRight(_:) 함수가 할당될 것이다.
let moveToZero: MoveFunc = functionForMove(position > 0)
print("원점으로 갑시다.")
// 원점에 도착하면(현 위치가 0이면) 반복문이 종료된다.
while position != 0 {
print("\(position)...")
position = moveToZero(position)
}
print("원점 도착!")
/*
원점으로 갑시다.
3...
2...
1...
원점 도착!
*/
'Swift > 책 정리' 카테고리의 다른 글
[Swift] 함수(6) - 반환 값을 무시할 수 있는 함수 (0) | 2021.01.30 |
---|---|
[Swift] 함수(6) - 종료되지 않는 함수 (0) | 2021.01.30 |
[Swift] 함수(4) - 데이터 타입으로서의 함수 (0) | 2021.01.28 |
[Swift] 함수(3) - 반환이 없는 함수 (0) | 2021.01.28 |
[Swift] 함수(2) - 매개변수 (0) | 2021.01.27 |