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
- replacingOccurrences
- 동적언어
- ios
- 17681
- ReactNative
- lineending
- 약타입
- 72410
- 프로그래머스
- JavaScript
- next.js
- 데이터타입함수
- DelayInput
- client-side-rendering
- textinput
- 약타입언어
- multiline
- 중첩함수
- switch구문
- Server-Side-Rendering
- 비반환함수
- 스위프트
- 옵셔널
- 리액트네이티브
- reactnavigation
- beforePopState
- 나를부르는숲
- reactnative android
- SWIFT
- 함수형프로그래밍
Archives
- Today
- Total
으니의 개발로그
[Swift] 함수(4) - 데이터 타입으로서의 함수 본문
[Swift] 함수(4) - 데이터 타입으로서의 함수
이 글은 Swift 프로그래밍 책을 읽고 요약한 내용입니다.
스위프트의 함수는 일급 객체이므로 하나의 데이터 타입으로 사용할 수 있다. 즉, 각 함수는 매개변수 타입과 반환 타입으로 구성된 하나의 타입으로 사용(정의)할 수 있다는 뜻이다.
(매개변수 타입의 나열) -> 반환 타입
func sayHello(name: String, times: Int) -> String {
// ...
}
sayHello
함수의 타입은 (String, Int) -> String
이다.
func sayHelloToFriends(me: String, names: String...) -> String {
// ...
}
sayHelloToFriends
함수의 타입은 (String, String...) -> String
이다.
만약 매개변수나 반환 값이 없다면 Void
키워드르 사용하여 없음을 나타낸다.
func sayHelloWorld() {
// ...
}
func sayHelloWorld() -> Void {
// ...
}
sayHelloWorld
함수의 타입은 (Void) -> Void
이다.
다음 표현은 모두 (Void) -> Void
와 같은 표현이다.
(Void) -> Void
() -> Void
() -> ()
함수의 축약 표현
sayHello(name: String, times: Int) -> String
함수의 경우sayHello(name:times)
와 같이 이름과 매개변수 개수 등을 이용해 함수를 표현할 수 있다.
typealias CalculateTwoInts = (Int, Int) -> Int
func addTwoInts(_ a: Int, _ b: Int) -> Int {
return a + b
}
func multiplyTwoInts(_ a: Int, _ b: Int) -> Int {
return a * b
}
var mathFunction: CalculateTwoInts = addTwoInts
// var mathFunction: (Int, Int) -> Int = addTwoInts 와 동일한 표현이다.
print(mathFunction(2, 5))
/* 7 */
mathFunction = multiplyTwoInts
print(mathFunction(2, 5))
/* 10 */
두 Int
값을 입력받아 계산 후 Int
값을 돌려주는 형태의 함수를 CalculateTwoInts
라는 별칭으로 지었다.
그리고 addTwoInts(_:_:)
와 multiplyTwoInts(_:_:)
라는 간단한 함수 두 개를 만들었다. 두 함수는 변수 mathFunction
에 번갈아가며 할당되거나 mathFunction
이라는 이름으로 호출할 수도 있다.
또, 전달인자로 함수를 넘겨줄 수도 있다.
func printMathResult(_ mathFunction: CalculateTwoInts, _ a: Int, _ b: Int) {
print("Result: \(mathFunction(a, b))")
}
printMathResult(addTwoInts, 3, 5)
/* Result: 8 */
반환 값으로 함수를 반환할 수도 있다.
func chooseMathFunction(_ toAdd: Bool) -> CalculateTwoInts {
return toAdd ? addTwoInts : multiplyTwoInts
}
printMathResult(chooseMathFunction(true), 3, 5)
/* Result: 8 */
'Swift > 책 정리' 카테고리의 다른 글
[Swift] 함수(6) - 종료되지 않는 함수 (0) | 2021.01.30 |
---|---|
[Swift] 함수(5) - 중첩 함수 (0) | 2021.01.29 |
[Swift] 함수(3) - 반환이 없는 함수 (0) | 2021.01.28 |
[Swift] 함수(2) - 매개변수 (0) | 2021.01.27 |
[Swift] 함수(1) - 함수의 정의와 호출 (0) | 2021.01.26 |