[Swift] 함수에 대해 알아보자 (기본편)

안녕하세요~ 차니에요!

 

오늘은 함수에 대해서 알아보도록 하겠습니다.

 

1. 함수 vs 메서드

시작에 앞서 헷갈릴 수 있는 용어부터 정리하고 가겠습니다.

함수(function) : 독립적인 기능을 수행하는 코드 단위
메서드(method) : 클래스, 구조체, 열거형에 포함되어 있는 함수, 클래스 함수라고도 부른다.

함수가 더 포괄적인 의미이므로 함수라는 용어로 포스팅 진행하겠습니다!

 

2. 함수 선언 방법

func name(parameters) -> Return Type {
	// Code...
}

함수 선언은 func 키워드로 이루어집니다.

 

2-1. 함수 이름

코딩 컨벤션에 맞추어 lowerCamelCase로 작성합니다.

lower는 소문자를, camel은 낙타를 뜻하는데 낙타의 등 모양을 연상해서 붙은 이름입니다.

아래 자주 사용되는 네이밍 컨벤션을 참고 삼아 적어두었습니다.

Lower camel case Upper camel case Snake case
getMyFavoriteMusic GetMyFavoriteMusic get_my_favorite_music

 

2-2. 파라미터

func wait(for time: Int) {
    print("wait for \(time)")
}

wait(for: 10) // wait for 10

인자는 함수 이름 뒤의 괄호 안에 콤마(,)로 구분하여 n개 이상 사용할 수 있습니다.

 

여기서는 크게 3가지를 눈여겨 보시면 됩니다.

  1. Argument Label : 함수 호출 시 사용될 이름 (for)
  2. Parameter Label : 함수 내에서 사용될 이름 (time)
  3. Type : 인자의 자료형 (Int)
func wait(time: Int) {
    print("wait for \(time)")
}

wait(time: 10) // wait for 10

Argument Label은 필수가 아닌 선택으로 정의하지 않고도 사용할 수 있습니다.

Parameter Label을 입력하여 호출하면 됩니다.

 

func wait(_ time: Int) {
    print("wait for \(time)")
}

wait(10) // wait for 10

Argument Label 자리에 언더바(_)를 입력해주면 Argument Label을 생략하여 호출할 수 있게됩니다.

이를 와일드 카드 패턴이라 합니다.

 

2-3. 반환 타입

func wait(_ time: Int) -> String{
    return "wait for \(time)"
}

print(wait(10))

함수의 반환 타입을 파라미터 괄호 뒤에 -> Return Type의 형태로 입력해줍니다.

예제에서는 String Type을 반환한 모습입니다.

 

func wait(_ time: Int) -> Void {
    print("wait for \(time)")
}

func wait(_ time: Int) -> () {
    print("wait for \(time)")
}

func wait(_ time: Int) {
    print("wait for \(time)")
}

반환 값이 없을 때의 반환 타입은 아래 3가지 방식 중 하나를 사용할 수 있습니다.

  1. Void
  2. ()
  3. 생략 (2-2 예제에서 생략하여 사용했던 모습을 볼 수 있습니다.)

 

다음 시간에는 응용이라 하기는 애매한 조금 더 디테일한 부분을 확장편으로 알아보도록 하겠습니다!