1. 스위프트에서 함수를 선언하는 방법
2. 단일 표현식에서의 암묵적 반환
3. 스위프트 함수 호출하기
4. 함수의 반환값 처리하기
5.
6. 매개변수명을 생략하기
7. 지역 매개변수명과 외부 매개변수명을 달리 하기
8. 디폴트 매개변수 값 할당하기
9. 여러 결과값 반환하기
1. 스위프트에서 함수를 선언하는 방법
func 함수명 (매개변수 이름: 매개변수 타입, ...) -> 반환 결과 타입 {
... //함수 코드
}
swift
스위프트에서 함수를 선언하는 방법은 여타 언어들과 다르지 않다.
- func - 함수라고 컴파일러에게 알려주는 키워드
- 함수명 - 함수의 이름
- 매개변수 이름 - 매개변수의 이름
- 매개변수 타입 - 매개변수의 타입
- 반환 결과 타입 - 해당 함수가 반환할 타입을 의미. 만약 아무 타입도 반환하지 않는다면 선언하지 않는다
- 함수 코드 - 작업을 수행할 코드
func sayHello() {
print("hello")
}
swift
위의 함수는 아무 매개변수도 받지 않고, 아무 값도 반환하지 않고 그저 블럭 내의 코드를 실행하는 함수다
func buildHelloMessage(name : String) -> String {
return "Hello \(name)"
}
swift
위의 함수는 매개변수를 받아서, 문자열을 반환하는 함수다
2. 단일 표현식에서의 암묵적 반환
이전 예제의 buildHelloMessage 함수 내에서 문자열을 반환하기 위해 아주 널리 알려진 return 문이 사용되었다. 하지만 Swift 에선 Kotlin 과 마찬가지로, 단일 표현식을 가지고 있다면 return 문을 생략할 수 있다. 따라서 buildHelloMessage 는 다음과 같이 작성될 수도 있다.
func buildHelloMessage(name : String) -> String {
"Hello \(name)"
}
swift
하지만 단일 표현식이 아니라 두 개 이상의 표현식을 가지고 있다면 위와 같이 사용할 수 없다.
func buildHelloMessage(name : String) -> String {
let ret = "Hello \(name)"
ret //Compiler 에 의해 에러가 발생한다!
}
swift
3. 스위프트 함수 호출하기
함수를 선언했다면 다음 구문을 이용해 함수를 호출할 수 있다.
함수명(매개변수 이름1 : 인자1,매개변수 이름2 : 인자2,...)
swift
만약 아무 매개변수도 받지 않는 함수라면, 빈 괄호와 같이 함수를 호출할 수 있다.
func sayHello() {
print("hello")
}
sayHello()
swift
4. 함수의 반환값 처리하기
함수는 값을 반환할 수 있다. 이 때 반환타입을 지정해주게 되는데, 반환 타입과 타입이 일치하는 변수나 상수에 함수의 결과를 할당해줄 수 있다. 바로 다음과 같이 말이다.
func buildHelloMessage(name:String) -> String{
"Hello \(name)"
}
let helloMessage = buildHelloMessage(name:"Jong Ho")
print(helloMessage)// -> Hello Jong Ho
swift
5.
6. 매개변수명을 생략하기
기본적으로 Swift 의 함수는 매개변수의 이름을 지정해줬다면 인자로 넘길 때 이름 : 인자 의 형태로 넘겨야 한다. 따라서 위의 buildHelloMessage 함수를 호출할 때 항상 아래와 같이 name 매개변수 이름을 지정해서 호출해야 한다.
func buildHelloMessage(name:String) -> String{
"Hello \(name)"
}
let helloMessage = buildHelloMessage(name:"Jong Ho")
print(helloMessage)// -> Hello Jong Ho
swift
하지만 매번 매개변수명을 입력하기는 귀찮기 때문에, 이를 생략할 수 있는 방법이 있는데, 바로 매개변수의 이름앞에 _ 를 붙이는 것이다.
unc buildHelloMessage(_ name:String) -> String{
"Hello \(name)"
}
let helloMessage = buildHelloMessage("Jong Ho")
print(helloMessage)
swift
매개변수 이름 앞에 _ 를 붙이면 함수를 호출할 때 매개변수 이름을 생략할 수 있다.
7. 지역 매개변수명과 외부 매개변수명을 달리 하기
함수의 매개변수는 함수 내부에서 식별될 이름인 지역 매개변수명과 함수를 호출할 때 외부 블럭에서 식별할 이름인 외부 매개변수명을 가질 수 있다. 함수를 호출할 때 매개변수의 자세한 의미를 전달하기 위해 매개변수 이름을 길게 선언하면 함수 내부의 코드가 너무 길어질 수 있다. 이 때 외부 매개변수명을 설정해서 의미를 전달하는 동시에, 함수 내부에선 내부 매개변수명을 사용함으로써 이러한 문제를 해결할 수 있다.
//외부 매개변수명은 userName 을 설정!
func buildHelloMessage(userName name:String) -> String{
"Hello \(name)"
}
let helloMessage = buildHelloMessage(userName : "Jong Ho")
print(helloMessage)
swift
8. 디폴트 매개변수 값 할당하기
함수를 호출할 때 인자로 쓸 값이 들어오지 않은 경우에 사용할 매개변수 값을 지정할 수 있다.
//userName 매개변수의 기본값으로 Jong Ho 를 할당
func buildHelloMessage(userName name:String = "Jong Ho") -> String{
"Hello \(name)"
}
let helloMessage = buildHelloMessage() //userName 을 넘겨주지 않으면 기본값으로 사용된다
print(helloMessage)
swift
9. 여러 결과값 반환하기
결과타입을 튜플로 선언하면, 여러 개의 결과를 반환하는 함수가 될 수 있다. 다음 함수는 cm 단위를 가지는 값을 입력받아 m 와 km 로 변환한 결과를 반환하는 함수다.
func centimeterConverter(centimeter : Int) -> (meter : Double, killoMeter : Double) {
(Double(centimeter)/100, Double(centimeter) / 100000)
}
let result = centimeterConverter(centimeter:100000)
print("\(result.meter) 미터")
print("\(result.killoMeter) 킬로미터")
swift
'Swift' 카테고리의 다른 글
Swift 에러 핸들링 (0) | 2022.02.11 |
---|---|
Swift 딕셔너리 (0) | 2022.02.10 |
Swift 프로퍼티 래퍼 (0) | 2022.02.10 |
구조체와 클래스 (0) | 2022.02.10 |
Swift 함수 - 2 (0) | 2022.02.09 |
Comment