Swift의 함수 표현은 C언어 함수 표현부터 Objective-C의 복잡한 함수 스타일까지 굉장히 다양하고 유연하다.
함수 호출을 단순화하기 위해서 매개변수로 기본값을 제공할 수 있다.
모든 함수는 매개변수 유형과 반환 유형으로 나누어 진다. 하지만 다른 유형처럼 사용할 수 있다.
캡슐화를 위해 다른 함수 내에 작성할 수 있다.
Swift에는 여러 최신 언어의 특징들이 포함되어 있다.
함수 정의 및 호출(Defining and Calling Functions)
func 키워드와 함께 생성한다. -> 뒤에 오는 타입은 반환형의 타입이다.
func greet(person: String) -> String {
let greeting = "Hello, " + person + "!"
return greeting
}
함수 매개변수 및 반환값 (Function Parameters and Return Values)
Swift는 단순한 유틸리티 함수부터 복잡한 함수까지 무엇이든 정의할 수 있다.
- 매개변수가 없는 함수
- 여러 매개변수가 있는 함수
- 반환값이 없는 함수
- 여러 반환값이 있는 함수
- 선택적 반환 함수
선택적 반환 함수를 통해 함수에서 반환되는 값이 nil 을 가질 수 있는 경우를 만들 수 있다.
func minMax(array: [Int]) -> (min: Int, max: Int)? {
if array.isEmpty { return nil }
var currentMin = array[0]
var currentMax = array[0]
for value in array[1..<array.count] {
if value < currentMin {
currentMin = value
} else if value > currentMax {
currentMax = value
}
}
return (currentMin, currentMax)
}
- 암시적으로 반환하는 함수 : 함수 전체 본문이 단일 표현식인 경우 암시적으로 해당 표현식을 반환한다.
func greeting(for person: String) -> String {
"Hello, " + person + "!"
}
함수 인수 라벨 및 매개변수 이름(Funcion Argument Labels and Parameter Names)
- 라벨
매개변수 이름 앞에 공백으로 구분된 라벨을 작성한다.
이렇게 함으로 함수를 문장처럼 표현할 수 있고 함수 호출 시에 어떠한 의도인지 명확하게 알 수 있다.
func greet(person: String, from hometown: String) -> String {
return "Hello \(person)! Glad you could visit from \(hometown)."
}
print(greet(person: "Bill", from: "Cupertino"))
// Prints "Hello Bill! Glad you could visit from Cupertino."
- 라벨 생략
매개변수에 대한 라벨을 원치 않는다면 밑줄 ( _ ) 을 통해 해당 부분을 생략할 수 있다.
- 기본 매개변수
매개변수에 값을 할당하여 함수의 매개변수에 대한 기본값을 정의할 수 있다.
기본값이 설정되어 있다면 해당 매개변수는 required가 아니게 된다.
함수 유형 (Function Types)
상수 혹은 변수로 함수 타입을 정의할 수 있다.
따라서 변수 혹은 상수를 통해 함수를 호출할 수 있다.
중첩 함수 (Nested Functions)
함수를 중첩할 수 있다. 즉 함수 내부에 함수를 정의할 수 있다.
[참고 자료]
https://docs.swift.org/swift-book/LanguageGuide/Functions.html
[Swift] 제어 흐름 (0) | 2022.01.01 |
---|---|
[Swift] 컬렉션 유형 (0) | 2022.01.01 |
[Swift] 문자 및 문자열 (0) | 2022.01.01 |
[Swift] 기본 연산자 (0) | 2022.01.01 |
[Swift] 첫 시작과 계기, 기초 (0) | 2022.01.01 |
댓글 영역