본문 바로가기
공부/스위프트

[스위프트] 함수(파트1)

by 초코팅촉 2023. 7. 9.
728x90

함수

대부분의 언어에서 지원하는 기능으로,
프로그램 실행시에 독립적으로 작동할 수 있는 부분을 분리해 구조화한 객체이다. 일종의 캡슐화라고도 할 수 있겠다.
이렇게 작성된 함수는 어디서든 간단하게 호출해 사용할 수 있다. 그래서 같은 내용으로 실행되야 한다면 여러번 작성할 필요없이
호출을 통해 같은 소스를 실행할 수 있다.

함수의 종류

함수는 일반 함수와 사용자 정의 함수로 나눠진다.
• 일반함수 : 프로그래밍 언어나 프레임워크에서 제공하는 함수. 예시)print, isEmpty등등
• 사용자 정의 함수 : 일반 함수에서 제공하지 않아 사용자가 함수의 입력과 출력, 실행될 구문을
직접 정의해 만드는 함수. 예시)로그인 정보를 받을 시 수행될 내용.

사용자 정의 함수

앞서 말했듯 일반 함수에는 간단한 기능들만 정의돼있다. 따라서 여러가지 복잡한 기능들을 만드려면 사용자 정의 함수를 작성해야 하는데 이때 일반 함수가 안에 들어가기도 하고 여러가지 조건문, 반복문들이 들어갈 수도 있고 반대로 10줄 이내의 간단한 기능이라도 여러곳에서 자주 써야한다면 그냥 함수로 만들어버릴수도 있다.

선언 및 초기화

사용자 정의 함수를 선언할때 함수이름은 필수로 있어야 하나
매개변수(함수로 넘겨질 변수 및 상수)와 반환타입은 없어도 된다.
하지만 스위프트에서는 함수를 정의하여 사용할 때
함수이름, 매개변수(파라미터; Parameter), 반환타입 세가지를 전부 고려해 어떤 함수인지 판단하므로
함수이름이 같아도 파라미터와 반환타입이 다르면 다른 함수로 판단한다.(이를 함수의 오버로딩(Overloading)이라 한다.)매개변수는 1개 일수도 있지만 여러 개를 받을 수 도 있다. 반환타입은 생략가능하나, 만약 반환을 한다면 값은 무조건 한개여야 한다.
함수의 이름에는 연산자[+,-,*,/]는 들어갈 수 없다. 또한 첫글자는 반드시 영어 또는 _(언더바)로 시작해야한다.

 

정리하자면 

매개변수나 반환타입 생략가능.

• 함수 선언시 파라미터명, 반환타입도 함수 식별자로 작용하므로 이름을 제외한 파라미터명과 반환타입이 달라지면 다른 함수로 취급.

• 매개변수는 0개 이상, 반환타입은 생략하거나 1개만.

• 함수 이름에 연산자는 불가능, 첫글자는 영어 및 _만.


선언방법은 다음과 같다.

//기본형
func 이름(매개변수1: 타입, 매개변수2: 타입, ...) -> 반환타입 {
    실행내용
    return 반환값
}

//파라미터가 없다면
func 이름() -> 반환타입 {
    실행내용
    return 반환값
}

//반환값이 없다면
func 이름(매개변수1: 타입, 매개변수2: 타입, ...) {
    실행내용
}

//매개변수와 반환값이 모두 없다면
func 이름() {
    실행내용
}

특이한 점이라면 반환값이 없어도 return이 있을수 있다는 점인데, 이때는 명시적으로 함수를 종료하기 위해 사용된다.

함수 호출

함수를 선언했으니 사용하는 법을 알아보자.
함수를 사용할때 함수의 이름과 파라미터명(있다면)을 쓰는데, 이를 "함수를 호출한다"고 한다.
특이한점은 방금 말한 것처럼 파라미터의 이름도 써야한다는 점이다.
함수의 호출은 두가지로 분류된다.(파라미터가 있을때, 없을때)

//파라미터 있을때
함수이름(매개변수1: 변수(혹은 상수)이름)

//파라미터 없을때
함수이름()


외부 매개변수명

함수를 선언할 때 파라미터명을 쓰고 호출시 해당 파라미터명을 사용하는데,

내부에서 식별과는 별도로 외부에서 식별할때 편하게 쓰려면 외부 매개변수명을 추가로 사용하면 된다.

//선언방식
func 이름(외부매개변수명 내부매개변수명: 타입) {}

//사용예시
func tempMethod(to a: String, from b: String) {
	print("This message send to (a) from (b).")
}

tempMethod(to: Jason, from: Jerry) // This message send to Jason from Jerry.

 

나머지 내용은 파트2에서 다루겠다.



스위프트 문법 - 함수, swift