안녕하세요.
오늘은 Swift의 함수에 대해 알아보겠습니다.
어떤 언어든 함수 부분이 첫 번째 고비인 것 같아요.
저도 공부하면서 다른 문법보다는 어려운 감이 있었는데요.
파이팅하면 좋겠습니다.
함수 선언명은 Clean Code에 관한 이전 포스팅을 참고하여 명확하게 지으면 좋습니다.
2021.08.02 - [개발,IT,코딩] - [유튜브 정리] 노마드 코더 Nomad Coders - 깨끗한 코드를 위한 5가지 팁
그럼 시작하겠습니다.
참고 자료
Apple Swift Document
https://developer.apple.com/documentation/swift
해당 포스팅은 Smile Han님의 유튜브 영상을 참고하며 작성하였습니다.
https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA
함수
함수란 특정 작업을 수행하는 코드 블록입니다.
함수 정의부에 있는 값을 매개 변수, parameter, 인자라고 하고
함수 호출 시 전달하는 값을 argument, 인수라고 합니다.
메서드(Method)
특정 클래스, 구조체, 열거형 내의 함수입니다.
함수를 Swift 클래스 내에 선언하면 메서드라고 부릅니다.
보통은 같은 의미로 함수와 메서드를 혼용하여 사용한다고 합니다.
함수 선언 방법
함수명은 좀 길더라도 의미가 명확하게 지어야 좋습니다.
func <함수명> (<매개변수 이름>: <매개변수 타입>, ... ) -> <반환값 타입> {
// 함수 코드
}
함수 선언 예시 1
func printHello() { // -> Void 는 생략 가능
print("Hello")
}
printHello()
//실행 결과
//Hello
print(type(of: printHello))
//실행결과
//() -> ()
parameter와 return 값이 모두 없는 형태입니다.
return값이 없는 경우 반환값 타입은 생략 가능합니다.
함수 호출도 함수명만 작성하면 됩니다.
함수의 타입은 parameter와 return값이 모두 Void이기 때문에 () -> ()이 출력되는 걸 볼 수 있습니다.
함수 선언 예시 2
func getMessage(type: Int, message: String) -> String {
return ("\(type) : \(message)")
}
let msg = getMessage(type: 1, message: "Hi! Hi!")
print(msg)
//실행 결과
//1 : Hi! Hi!
print(type(of: getMessage))
//실행결과
//(Int, String) -> String
parameter는 총 두 개로 각각 Int와 String이고 return값 타입은 String입니다.
parameter가 있는 경우 함수를 호출할 때 parameter 이름을 적어줘야 합니다.
함수의 타입을 찍어보면 parameter의 개수, 타입과 return값 타입이 나옵니다.
내부 매개변수 이름과 외부 매개변수 이름
Swift는 함수 내부에서 사용할 parameter 이름과
함수 호출 시 사용할 parameter 이름을 다르게 지정할 수 있습니다.
func <함수명> (<외부 매개변수 이름> <내부 매개변수 이름>: <매개변수 타입>, ... ) -> <반환값 타입> {
// 함수 코드
}
함수를 정의할 때는 내부 매개변수명을 사용하고
함수를 호출할 때는 외부 매개변수명을 사용합니다.
이때 외부 매개변수명을 생략하면 내부 매개변수명이 외부 매개변수명까지 겸합니다.
외부 매개변수 이름 예시
func getMessage(type t: Int, message s: String) -> String {
return ("\(t) : \(s)")
}
let msg = getMessage(type: 2, message: "Hello!")
print(msg)
//실행 결과
//2 : Hello!
내부 매개변수 이름은 t, s로 설정하고 외부 매개변수 이름으로 type과 message로 설정하였습니다.
getMessage 함수의 내부에서는 t와 s로 각 매개변수를 사용하고
함수를 호출할 때는 type과 message로 사용합니다.
외부 매개변수 생략
외부 매개변수 이름으로 _를 사용하면 호출할 때 매개변수 이름을 생략 가능합니다.
Swift에서 가장 많이 사용하는 방법이라고 하네요.
Objective-C의 함수 호출 방법이 이런 형태이고 Swift의 내부 함수들의 많은 수가 이 형태로 되어 있다고 합니다.
예시
func getMessage(_ t: Int, message s: String) -> String {
return ("\(t) : \(s)")
}
let msg = getMessage(3, message: "Goood!")
print(msg)
//실행 결과
//3 : Goood!
처음 매개변수는 외부 매개변수 명을 _로 설정하여 호출할 때 매개변수 명을 생략 가능하도록 하였습니다.
따라서 getMessage 함수의 첫 번째 매개변수는 정수만 넣어도
함수 호출이 가능합니다.
함수는 내용이 많아 포스팅을 세 개로 나누었습니다.
다음 포스팅에서 이어서 알아보도록 합시다.
다음 포스팅 바로 가기
2021.08.22 - [개발,IT,코딩] - [Swift] Swift 문법 - 함수(2)
감사합니다!
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.