함수는 특정 태스크 작업을 수행하는 코드 블록입니다. 함수를 사용하면 코드의 재사용성과 가독성을 높일 수 있습니다. Swift에서는 함수의 정의, 호출, 매개변수와 반환값 등을 통해 다양한 기능을 구현할 수 있습니다.
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/functions/
Documentation
docs.swift.org
함수(Function) 정의 : 함수는 특정 작업을 수행하기 위해 함께 구성된 일련의 명령문 또는 코드의 묶음이다.
함수는 입력값을 받아 처리하고, 그 결과를 출력값으로 반환할 수 있다. 그리고 그 안에 정의된 코드를 실행하는 역할을 한다. 함수는 여러 번 사용될 수 있기 때문에, 반복 코드를 줄이고 코드의 재사용성을 높이는데 유용하다.
반복문과 비슷한 면이 있지만, 특정 동작을 반복하는 반복문과 달리 특정 동작을 정의하고 필요할 때마다 호출하여 사용한다.
즉 코드 블록을 수행하기 위해서 이름을 붙이고, 이것을 호출해서 해당 코드를 수행한다.
- 여러 곳에서 재사용 가능하며, DRY (Don’t Repeat Yourself)
func 함수이름(매개변수이름: 매개변수타입) -> 반환타입 {
// 함수가 수행할 작업
return 반환값
}
// 반환값이 없는 함수
func 함수이름(매개변수이름: 매개변수타입, 매개변수1이름: 매개변수1타입 ... ) -> Void {
// 함수 구현부
return
}
// 매개변수와 반환값이 없는 함수
func 함수이름() -> 반환타입 {
// 함수 구현부
return 반환값
}
// 기본값을 갖는 매개변수는 매개변수 목록 중 뒤쪽에 위치하는 것이 좋음
func 함수이름(매개변수이름: 매개변수타입, 매개변수1이름: 매개변수1타입 = 매개변수 기본값 ... ) -> 반환타입 {
// 함수 구현부
return 반환값
}
함수(Function) 작성 : 함수를 선언할 때는 가장 앞에 func 키워드를 붙이고 (person: String) 파라미터와 형 그리고 -> String 형태로 반환형을 정의한다. 즉 func키워드를 사용해서 선언 후 () 안에 인자를 받을 수 있게 만들 수도 있고, 반환되는 값이 있는 경우 -> 을 이용해서 반환 타입을 선언한다.
- 함수의 구성요소
- 함수 이름(필수)
- 인풋(선택)
- 아웃풋(선택)
- <함수이름>() 을 통해서 실제 함수를 수행 시킨다.

- func : 함수 정의를 시작하는 키워드.
- greet(name: String) : 함수 이름과 매개변수의 정의. name은 함수가 받을 입력값이고, String은 해당 입력값의 타입.
- -> String : 반환타입. String 타입의 값을 반환.
- return : 함수 내에서 반환값을 지정하는 키워드.

전달인자 레이블 : 함수를 호출할 때 매개변수의 역할을 좀 더 명확하게 하거나 함수 사용자의 입장에서 표현하고자 할 때 사용
func 함수이름(전달인자 레이블 매개변수이름: 매개변수타입, 매개변수1이름: 매개변수1타입 = 매개변수 기본값 ... ) -> 반환타입 {
// 함수 구현부
return 반환값
}

가변 매개변수 : 전달받을 값의 개수를 알기 어려울 때 사용 가능, 가변 매개변수는 함수당 하나만 가질 수 있다. 점(...) 띄어쓰기 주의.
func 함수이름(전달인자 레이블 매개변수이름: 매개변수타입, 매개변수1이름: 매개변수1타입 = 매개변수 기본값...) -> 반환타입 {
// 함수 구현부
return 반환값
}




input parameter 받기 : 함수는 필요한 데이터를 받을 수 있음. 넘겨받을 인풋에 대해서, 이름과 타입을 정해줘야 하며 () 안에 필요한 인자들을 정의해야 한다.

output 값 반환하기 : 함수는 데이터를 반환할 수 있고, 반환할 아웃풋에 대해 타입을 정해줘야 한다.
함수 내부에서는 return 키워드를 통해서 아웃풋을 반환시킨다.

input parameter label : 앞서서 input parameter의 이름을 정해주었으므로 parameter를 호출하는 외부, 내부 관점에서 보았을 때 이름을 다르게 하는 것이 더 자연스러울 때가 있다.
- 결국 코드는 가독성을 높여, 동료 개발자들이 이해해기 쉬워야 하기 때문.
- 앞서 만들었던 printName의 경우 호출 시 어색함이 있으므로 개선

default parameter : 파라미터에 기본값을 설정해 줄 수도 있음. default 케이스에 대해서는 코드를 줄여서 심플하게 표현가능

variadic function : 정해지지 않은 수의 여러 파라미터를 받을 수 있은 형태의 함수를 의미한다.
대표적으로 print() 함수가 있고, 함수 내부적으로 이렇게 받은 파라미터를 배열의 형태로 받음.

throwing function : 함수 수행 간에 예외 상황이 일어날 수 있다.
따라서, 제대로 함수를 수행할 수 없는 경우 Error을 내보내게 됨 > 예를 들어, 잘못된 인풋, 네트워크 끊김 등
throws 키워드를 이용해서 만들 수 있고, throws 가 있는 함수는 try를 이용해 호출하고, do-catch를 이용해 에러 감지를 할 수 있음

in-out parameter : 함수에서 넘겨받는 input parameter는 constant이다. 따라서 값을 변경할 수 없다.
inout을 이용하면 변경 가능하며, 원래 오리지널 값도 변경이 된다.

함수를 사용하는 이유는 다양하다. 그중
- 코드 재사용성 : 동일한 코드를 여러 번 쓰지 않고 함수로 정의해 그 함수를 여러 번 호출할 수 있다. (반복 코드를 줄임)
- 모듈화 : 함수를 사용하면 코드를 작은 단위로 나누어 관리하기 용이하다.
- 값 반환 : 함수는 결과 값을 반환할 수 있다. 이를 통해 함수의 결과 값을 다른 곳에서 사용할 수 있다.
따라서 자주 사용되는 코드에 변화를 주고 싶거나, 반복되는 작업 시 함수를 사용하면 효과적으로 코드를 관리하고 개선할 수 있다.
'IOS > Swift' 카테고리의 다른 글
| [Swift] 클래스(Class)와 구조체(Struct) - 구조체(Struct) (0) | 2025.06.20 |
|---|---|
| [Swift] 클로저(Closure) (0) | 2025.06.19 |
| [Swift] 옵셔널(Optional), 타입캐스팅(Typecasting) (0) | 2025.06.17 |
| [Swift] 제어문(Control Flow) - 조건문(Conditions), 반복문(Roops) (0) | 2025.06.16 |
| [Swift] 연산자(Operator) (0) | 2025.06.14 |