13. Swift함수의 반환 타입
함수는 특정 연산을 수행한 후 결과값을 반환할 수 도 있고 반환하지 않을 수 도 있다. 만약 반환 값이 없는 함수라면 반환 타입을 '없음'을 의미하는 Void로 표기하거나 아예 반환 타입 표현을 생략해도 된다.
즉, 반환 타입이 Void이거나 생략되어 있다면 반환 값이 없는 없는 함수이다.
func byebye() -> Void { //명시적으로 Void를 선언해도 된다.
print("say good by~")
}
Swift에서 함수는 일급 객체이므로 하나의 데이터 타입으로 사용할 수 있다. 각 함수는 매개변수 타입과 반환 타입으로 구성된 하나의 타입으로 사용(정의)할 수 있다는 뜻이다.
(매개변수 타입의 나열) -> 반환 타입
func makMyName(name: String, count: Int) -> String {
//...
}
makMyName함수의 타입은 (String, Int) -> String이다.
(Void) -> Void ,
Void키워드를 빈 소괄호의 묶음으로 표현할 수 있다. 다음 표현은 모두 (Void) -> Void와 같은 표현이다.
(Void) -> Void
() -> Void
() -> ()
함수를 데이터 타입으로 사용할 수 있다는 것은 함수를 전달인자로 받을 수도 있고 반환 값으로 돌려줄 수도 있다는 의미이다. 상황에 맞는 함수를 전달인자로 넘겨 적절히 처리할 수 도 있으며 상황에 맞는 함수를 반환해주는 것도 가능하다는 의미.
함수 타입의 사용 예)
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와 동일한 표현
mathFunction(2,5))
전달인자로 함수를 전달 받는 하뭇
func printMathResult(_ mathFunction: CalculateTwoInts, _ a: Int, _ b: Int) {
mathFuncion(a, b)
}
반환값으로 함수를 반환할 수 도 있다.
func chooseMathFunction(_ toAdd: Bool) -> CalculaateTwoInts {
return toAdd ? addTwoInts : multiplyTwoInts
}
chooseMathResult(chooseMathFunction(true), 3, 5)
* 전달인자 레이블은 함수 타입의 구성요소가 아니므로 하뭇 타입을 작성할 때는 전달인자 레이블을 써줄 수 없다.
'프로그래밍 > Spring' 카테고리의 다른 글
15. 옵셔널(Optional) (0) | 2019.02.22 |
---|---|
14. Swift의 다양한 함수들 (0) | 2019.02.21 |
12. Swift 함수의 매개변수 이름과 전달인자 레이블 (0) | 2019.02.19 |
11. Switch문의 골격 (0) | 2019.02.18 |
10. Swift 열거형(enum) (0) | 2019.02.17 |