[Swift] 함수 기본 및 고급 개념

김형근·2024년 7월 20일

[Swift] 문법

목록 보기
5/20

🍎 Swift의 함수 기본 및 고급 개념

🍏 1. 함수의 선언

🧃 기본 형태

  • 함수는 다음과 같은 형식으로 선언됩니다.
// func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> 반환타입 {
// 함수 구현부
// return 반환값
// }

예를 들어, 두 개의 정수를 더하는 함수를 정의할 수 있습니다.

func sum(a: Int, b: Int) -> Int {
    return a + b // 두 정수를 더한 값을 반환
}

🧃 반환 값이 없는 함수

  • 반환 값이 없는 함수는 Void 타입을 사용합니다.
func printMyName(name: String) -> Void {
    print(name) // 이름을 출력
}

Void를 생략할 수도 있습니다.

func printYourName(name: String) {
    print(name) // 이름을 출력
}

🧃 매개변수와 반환값이 없는 함수

  • 매개변수와 반환값이 모두 없는 함수도 가능합니다.
func hello() -> Void {
    print("hello") // "hello" 출력
}

반환 타입을 생략할 수 있습니다.

func bye() {
    print("bye") // "bye" 출력
}

🧃 함수 호출

sum(a: 3, b: 5) // 8 출력
printMyName(name: "geuni") // "geuni" 출력
printYourName(name: "geeunii") // "geeunii" 출력
maximumIntegerValue() // Int의 최댓값 출력
hello() // "hello" 출력
bye() // "bye" 출력

🍏 2. 매개변수 기본값

  • 매개변수에 기본값을 설정하여, 호출 시 생략할 수 있습니다. 기본값을 가진 매개변수는 뒤쪽에 위치하는 것이 좋습니다.
func greeting(friend: String, me: String = "geuni") {
    print("Hello \(friend)! I'm \(me)") // 친구에게 인사
}

greeting(friend: "geeunii") // 기본값 사용: "Hello geeunii! I'm geuni"
greeting(friend: "hyun", me: "kim") // 기본값 생략: "Hello hyun! I'm kim"

🍏 3. 전달인자 레이블

  • 전달인자 레이블을 사용하면 함수 사용 시 매개변수의 역할을 명확히 할 수 있습니다.
func greeting(to friend: String, from me: String) {
    print("Hello \(friend)! I'm \(me)") // 친구에게 인사
}

greeting(to: "geeunii", from: "geuni") // "Hello geeunii! I'm geuni"

🍏 4. 가변 매개변수

  • 가변 매개변수는 전달받을 값의 개수를 알기 어려울 때 사용할 수 있습니다. 함수당 하나만 가질 수 있습니다.
func sayHelloToFriends(me: String, friends: String...) -> String {
    return "Hello \(friends)! I'm \(me)!" // 친구에게 인사
}

print(sayHelloToFriends(me: "geuni", friends: "geeunii", "hyun", "kim")) // "Hello ["geeunii", "hyun", "kim"]! I'm geuni!"
print(sayHelloToFriends(me: "geuni")) // "Hello []! I'm geuni"

🍏 5. 테이터 타입으로서의 함수

  • Swift는 함수형 프로그래밍을 지원하는 원어로 함수는 일급 객체입니다. 즉, 변수나 상수에 저장하거나 매개변수로 전달할 수 있습니다.

🧃 함수의 타입 표현

  • 함수의 타입은 매개변수 타입과 반환 타입으로 표현됩니다.
// (매개변수1타입, 매개변수2타입 ...) -> 반환타입
var someFunction: (String, String) -> Void = greeting(to:from:)
someFunction("hyun", "geuni") // "Hello hyun! I'm geuni"

타입이 다른 함수는 할당할 수 없습니다.

// someFunction = sayHelloToFriends(me:friends:) // 오류 발생

🧃 함수 전달

  • 함수를 다른 함수의 매개변수로 전달할 수 있습니다.
func runAnother(function: (String, String) -> Void) {
    function("hyeong", "geun") // 함수 호출
}

// "Hello hyeong! I'm geun" 출력
runAnother(function: greeting(to:from:))

// "Hello hyeong! I'm geun" 출력
runAnother(function: someFunction)

💡 매개변수 (Parameter)

  • 매개변수(Parameter)는 함수나 메서드가 호출될 때 외부에서 전달받는 값을 말합니다. 매개변수는 함수가 실행될 때 필요한 정보를 제공합니다.
    즉, 함수가 특정 작업을 수행할 때 필요한 데이터를 함수 외부에서 받아오는 역할을 합니다.

매개변수의 특징

  1. 이름: 매개변수는 함수 내에서 사용될 이름을 가집니다.
  2. 타입: 매개변수는 특정 데이터 타입을 가질 수 있으며, 이를 통해 어떤 종류의 값이 전달될 수 있는지를 정의합니다.
  3. 기본값: 매개변수에는 기본값을 설정할 수 있어, 호출 시 생략할 수 있습니다.
  4. 가변 매개변수: 여러 개의 값을 받을 수 있도록 설정할 수도 있습니다.

    매개변수는 함수가 외부에서 입력받는 값으로, 함수의 기능을 수행하는 데 필요한 정보를 제공합니다. 매개변수는 이름과 타입을 가지며, 기본값을 설정하거나 가변 매개변수로 여러 값을 받을 수 있습니다. 이를 통해 함수의 재사용성과 유연성을 높일 수 있습니다.

profile
꾸준히 기록하기

0개의 댓글