iOS/개념

[Swift] 함수 타입이란? (Function Types)

안경 쓴 귀니 2022. 3. 19. 19:19
반응형

 

 함수 타입(Function Types)이란?  

변수에 함수를 대입하면 그 변수는 일반적으로 문자열, 정수 등과는 전혀 다른 타입이 되는데

이를 함수 타입(Function Types)이라고 한다.

 

 

 함수 타입의 형태 

함수 타입은 (인자 타입 1, 인자 타입 2,...) -> 반환 타입 형태로 표시한다.

 

 

예시1. 매개변수 1개와 반환 타입이 있는 함수

func boo(age: Int) -> String {
	return "\(age)"
}

위 함수를 함수 타입으로 변환 시

(Int) -> String

사용 방법

let b1: (Int) -> String = boo
let b2 = boo(age:)

b1(3)	// return "3"
b2(4)	// return "4"

 

 

예시 2. 매개변수 2개와 반환 타입이 있는 함수

func boo(age: Int, name: String) -> String {
	return "\(age), \(name)"
}

위 함수를 함수타입으로 변환 시

(Int, String) -> String

사용 방법

let b3: (Int, String) -> String = boo
let b4 = boo(age:name:)

b3(3, "eunsu")  // return "3, eunsu"
b4(4, "eunju")  // return "4, eunju"

 

 

예시 3. 매개변수 1개가 있고, 반환 타입이 없는 함수

func boo(age: Int) {
    print(age)
}

위 함수를 함수타입으로 변환 시

(Int) -> ()
(Int) -> Void

사용 방법

let b5: (Int) -> Void = boo
let b6: (Int) -> () = boo
let b7 = boo(age:)

b5(3)   // "3"
b6(4)   // "4"
b7(5)   // "5"

※ 참고사항

반환 타입이 없는 경우, 반환 타입 생략은 불가능하며 Void 또는 ()를 사용

 

 

예시 4. 매개변수가 없고, 반환 타입이 있는 경우

func boo() -> String {
    return "boo"
}

위 함수를 함수타입으로 변환 시

() -> String

사용 방법

let b8: () -> String = boo
// let b9 = boo()	// return "boo". 해당 경우는 사용 불가. 함수 자체를 대입하는 것이 아니라, 함수의 결과물을 b9라는 상수에 할당하는 대입 연산임

b8()

※ 참고사항

매개 변수가 없는 경우, 생략은 불가능하며 ()를 사용

 

 

 참고사항 정리 

1. 함수 타입 사용 시 매개변수가 없는 경우는()를 사용하며, 반환 타입이 없는 경우는 ()와 Void 모두 사용 가능

2. 상수 b2, b7 의 경우 함수 식별자가 동일하기 때문에 주의

 

 

출처: 꼼꼼한 재은씨의 Swift: 문법편

반응형