함수(func)

썹스·2022년 9월 29일
0

Swift 문법

목록 보기
5/68

함수(func)란?

특정 작업 또는 기능을 수행하는 코드 블록을 함수라 부르며, func키워드를 사용하여 함수를 정의하고 사용할 수 있습니다.

📌 함수와 메서드

특정 클래스, 구조체, 열거형 내의 함수를 메서드라고 부릅니다. (함수를 정의한 위치에 따라 함수를 메서드라 부를 수도 있습니다.)
(즉, 클래스 안에서 함수를 선언하면 해당 함수를 메서드라고 부른다.)


📌 함수를 왜 사용할까??🤔

  • 자주 사용하는 작업 또는 기능을 단순화하여 재사용 할 수 있습니다.
  • 코드를 논리적인 단위로 구분할 수 있습니다.
  • 코드 길이가 긴 것을 단순화하여 사용할 수 있다.
  • 함수를 미리 만들어 놓으면, 사용자는 함수의 내부적인 내용을 몰라도 사용할 수 있습니다.

📌 함수에서 사용하는 용어

  • 매개변수, 인자(parameter): 함수 정의부의 값을 매개변수라고 부른다.
  • 인수(argument): 호출시의 값을 아규먼트라고 부른다.


📌 함수의 기본 구조

✅ 반환 값이 없는 경우

func 함수명(){
    //실행할 코드
}

함수명()  // 함수 실행

✅ 반환 값이 있는 경우

func 함수명(파라미터: 파라미터 타입, 파라미터: 파라미터 타입,...) -> 반환 타입{
     //함수 코드
}

함수명(파라미터: 아규먼트, 파라미터: 아규먼트) //함수 실행

📌 함수 선언 및 사용

func add1(x: Int, y: Int) -> Int{
    return x+y
}

func add2(x: Int, y: Int) -> Int{
    let sum = x + y    //함수 내부에 변수(상수)를 선언해서 사용할 수 있다.
    return sum
}

print(add1(x: 1, y: 0))
print(add2(x: 2, y: 0))

/*
출력 결과
1
2
*/


📌 함수를 선언하는 여러 가지 방법

✅ 내/외부 파라미터를 같이 사용하는 방법

내부 파라미터: 함수 내부에서 사용하는 파라미터
외부 파라미터: 함수 외부에서 사용하는 파라미터

func add(x: Int, y: Int) -> Int{
    return x + y
}

print(add(x: 2, y: 0))

✅ 내/외부 파라미터를 각각 사용하는 방법

파라미터의 이름을 내/외부로 각각 선언하여 사용하는 방식으로 함수 외부에서만 사용할 수 있는 Argument Label을 선언하여 사용합니다.

func add(A x: Int,B y: Int) -> Int{  // Argument Label: A, B
    return x + y
}

print(add(A: 2, B: 0))

✅ 밑줄( _ )을 사용하여 외부 파라미터를 생략하는 방법 (추천 X)

func add(_ x: Int, _ y: Int) -> Int{
    return x+y
}

print(add(10, 20))

✅ 첫 번째 외부 파라미터명만 생략하는 방법 (Object-C 언어의 호출 방식)

func add(_ x: Int, with y: Int) -> Int{
    return x+y
}

print(add(10, with: 20))

함수의 다양한 파라미터

Swift에서 함수는 사용의 목적과 때에 따라 다양한 형태로 함수를 정의할 수 있습니다.

그중에서 파라미터와 아규먼트의 형태에 따라 정의될 수 있는 함수가 있습니다.

📌 가변 파라미터(Variadic Parameters)

함수가 지정된 데이터 타입으로 0개 또는 그 이상의 파라미터를 받는다는 것을 가리키기 위해서 세 개의 점(...)을 이용하여 선언하는 방식의 파라미터입니다.

var sum = 0
func add(num: Int...) -> Int{
    for i in num{
        sum = sum + i
    }
    return sum
}

print(add(num: 1, 2, 3, 4))


/*
출력 결과
10
*/

📌 디폴트 파라미터(Default Parameter)

인수(argument)로 전달하는 값이 없는 경우, 기본값으로 설정한 파라미터를 사용하는 방식의 파라미터입니다.

func name(firtName: String = "아무개", lastName: String) -> String{
    return ("성 = \(lastName), 이름 = \(firtName)")
}

print(name(lastName: "김"))      //전달하는 값이 없으면 디폴트 값으로 대체

/*
출력 결과
성 = 김, 이름 = 아무개
*/

📌 inout 파라미터

Swift는 기본적으로 call by value이지만, inout 키워드를 사용하여 call by reference를 구현할 수 있습니다.

즉, 스택(Stack) 영역에 접근하는 방식이 아닌 힙(Heap) 영역에 접근하는 방식

(파라미터 주소의 값 자체를 변경하여 코드 실행 후 실행된 값이 유지됩니다.)

var x = 10
func aaa(value: inout Int) -> Int{
    value = value + value
    return value
}

print(x)
print(aaa(value: &x))
print(x)      


/*
출력 결과
10
20
20
*/
profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글