본문 바로가기
프로그래밍/Spring

13. Swift함수의 반환 타입

by Mr-후 2019. 2. 20.
반응형

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