Dog foot print

[SWIFT] 함수 시작하기 본문

IOS/Swift

[SWIFT] 함수 시작하기

개 발자국 2021. 7. 7. 16:59

함수란 ?

독립적으로 실행 가능한 코드이다.

함수 정의 템플릿

func 함수이름 (매개변수명1 : 타입, 매개변수명2 : 타입) -> 반환 타입 {
    실행내용
    return 반환값
}

예시 코드

func sum(x : Int, y : Int) -> Int{
    print("매개변수1 \(x) , 매개변수2 \(y)");
    return x + y;
}

Note : 매개변수가 존재하지 않는다면 작성하지 않아도 된다.
Note : return 하는 값이 존재하지 않다면, void 타입을 명시해주지 않아도 된다.

함수 식별자

 func sum(x : Int, y : Int) -> Int{
    print("매개변수1 \(x) , 매개변수2 \(y)");
    print("매개변수명 x,y")
    return x + y;
}
func sum(a : Int, b : Int) -> Int{
    print("매개변수1 \(a) , 매개변수2 \(b)");
    print("매개변수명 a,b")
    return a + b;
}
func sum(){
    print("hello world")
}

//서로 다른 sum
sum(x : 10,y : 20); //매개변수명 x,y
sum(a : 10,b: 20); //매개변수명 a,b
sum();

함수를 식별할때는 함수의 이름과 매개변수 명이 동시에 사용된다. 그렇기에, 매개변수명이 다른 두개의 같은 이름 함수는 매개 변수의 이름으로 구분 지어 식별 한다. 이를 레이블이라고 표현 한다.

함수 호출

... 함수 식별자 코드에 이어서

sum(x :10 y :20)
sum(x : y :)(10,20)

Note : lable을 표시해주어야 식별 가능하다.

외부 매개변수명, 내부 매개변수명

func welcomMessage(to who : String,message wecomeMessage : String){
    print("\(who)에게 \(welcomeMessage)를 보냅니다.")
}
welcomeMessage(to : "lee", message : )

func hello(_ who : String,_ wecomeMessage : String){
    print("\(who)에게 \(welcomeMessage)를 보냅니다.")
}
hello("lee","hello")

위의 welcomMessage 함수에서 tomessage는 외부 매개변수명이다. 이는 외부에서 매개변수명이 상당히 긴 경우, 함수 호출 시 가독성을 해치기 때문에 사용된다. 만약 외부 매개변수명이 존재하지 않을 때는, 내부 매개변수명이 함수 호출 시 식별자로 사용된다.

TIP : 외부 매개 변수명은 함수 내부에서는 사용 할 수 없다.
TIP : 만약 외부 매개변수명에 _를 설정하게 되면 외부 매개변수 레이블 없이 함수를 호출 할 수 있게 된다.

가변인자

func sum(rest : Int...){
    var result = 0
    for numb in rest {
        result += numb    
    }
    return result;
}
sum(rest : 1,2,3,4,5,6);

sum과 같은 함수는 기본적으로 최소 2개 이상의 매개 변수를 가지게 된다. 그러나, 매개변수가 몇개가 들어올지 몰라 무한정 파라메터를 증식 시켜, 함수를 여러개 만드는 것은 비 효율적이다. 이럴 때 주로 사용하는 것이 가변인자이다. 이 가변인자는 한개의 레이블에 ,로 구분지어 여러 값을 할당 할 수 있다.

Note : 1번에 두개 이상의 가변인자를 사용 할 수 없다.

func sum(names : String... ,rest : Int...){}

Note : 가변인자는 파라메터 위치 상 마지막에 있어야 한다.

기본 값을 갖는 매개 변수

func sum(x : Int, y : Int = 0){
    return x + y
}
sum(x : 1) // 1

만약 옵션과 같은 것들이 존재할 때 기본 설정을 사용하기 위해 옵션을 넣지 않는 함수들이 존재한다. 이런 경우 매개변수에 기본 값을 명시해주어 해당 매개변수에 값이 존재하지 않을 때는 해당 값을 사용 할 수 있다.

#swift

반응형

'IOS > Swift' 카테고리의 다른 글

[SWIFT] CLOSURE  (0) 2021.07.09
[Swift] Inout  (0) 2021.07.08
[SWIFT] Optional  (0) 2021.07.05
[SWIFT] Dictionary  (0) 2021.07.05
[SWIFT] Set 집합  (0) 2021.07.01
Comments