[Swift]함수란?

choe_ju·2023년 10월 5일

📖 함수란?

  • Swift에서 함수는 재사용 가능한 코드 블록을 나타내며, 특정 작업을 수행하는 데 사용됩니다. 함수를 호출하면 그 내부의 코드가 실행되며 결과를 반환할 수 있습니다.

📎 함수 선언하기

  • Swift에서 함수를 선언하는 방식은 다음과 같습니다.
func functionName(parameters) -> ReturnType { 
	// 함수 본문 
    return someValue 
}
  • functionName: 함수의 이름
  • parameters: 함수가 받는 매개변수       ->        매개변수 명: 매개변수 타입 으로 선언
  • ReturnType: 함수가 반환하는 값의 타입
  • someValue: 반환되는 값 (반환 타입이 Voi

📎 여러 가지 표현식

  • Swift 함수는 여러 다양한 형태로 선언될 수 있으며, 몇 가지 예시를 살펴보겠습니다.

1. 매개변수가 없는 함수, 반환값이 없는 함수

  • 반환값이 없는 경우에는 -> 반환타입 을 생략 시 Void형으로 자동 생성되기에 생략 가능합니다.
func greet() { 
	print("Hello, World!") 
}
/* 위와 동일
func greet() -> Void { 
	print("Hello, World!") 
}
*/
greet()	// Hello, World!

2. 매개변수가 있는 함수

  • 사용할 매개변수가 있는 경우 괄호 안에 매개변수 명: 매개변수 타입 형태로 사용하는 매개변수를 전부 선언하면 됩니다.
  • 기본적인 형태로 사용할 경우 함수 사용 시에도 매개변수명: 변수 형태로 사용해야 하지만, 함수 선언 할때 매개변수 명 앞에 "_"를 추가 할 경우 변수명 없이도 사용가능합니다.
func greet(name: String) { 
	print("Hello, \\(name)!")
}

greet(name: "jun") // Hello, jun!

// 위와 동일
func greet2(_ name: String) { 
	print("Hello, \\(name)!")
}
// 매개변수 명 없이 사용 가능
greet("jun") // Hello, jun!

3. 반환값이 있는 함수

  • 반환 값이 있는 경우 " -> 반환타입 을 작성해야하며 필수적으로 return이 포함되어 있어야 합니다.
func square(number: Int) -> Int { 
	return number * number 
}

print(square(2)) // 4

📎 매개변수 디폴트값 선언하기

  • 매개변수 타입 뒤 기본값을 설정할 경우 함수를 호출할 때 매개변수를 생략하더라도 기본 값을 통해 실행이 됩니다.
swiftCopy code
func greet(name: String = "Guest") { 
	print("Hello, \\(name)!")
} 

// 함수 호출 
greet() // "Hello, Guest!" 
greet(name: "Alice") // "Hello, Alice!"

📎 여러 결과값 반환하기

  • 튜플을 사용하여 함수에서 여러 결과값을 반환할 수 있습니다. 예를 들어, 다음 함수는 두 개의 값을 반환합니다
  • 단! 여러개의 값을 반환하기에 구분하기 위해 반환값 명: 반환 타입을 명시해줘야 합니다.
  • 반환 값을 사용 할 경우 함수반환 값을 받은 변수 뒤 .반환명 을 붙여 사용합니다
func findMinMax(array: [Int]) -> (min: Int, max: Int) { 
    var minValue = Int.max 
    var maxValue = Int.min 
    
    for number in array { 
        if number < minValue { 
        minValue = number 
    	}else if number > maxValue { 
    	maxValue = number 
        } 
    } 
    return (minValue, maxValue) 
}

let result = findMinMax(array: [3, 8, 1, 12, 5])
// 지정한 반환값 명을 붙여 값 사용 /ex) result.min
print("Min: \(result.min), Max: \(result.max)")	// Min: 1, Max: 12

📎 매개변수 여러개 받기 - 가변 매개변수

  • 매개변수는 타입 뒤에 ...을 붙여 사용하며, 해당 방법으로 선언할 경우 다수의 매개변수를 넣어 사용 가능합니다.
swiftCopy code
func sum(numbers: Int...) -> Int { 
    var total = 0 
    
    for number in numbers { 
        total +=number 
    } 
    return total 
}

let total = sum(numbers: 1, 2, 3) 
print("Sum: \\(total)")	// 6

📎 입출력 매개변수

  • 입출력 매개변수는 함수 내에서 값을 수정하고 함수 외부에서도 그 변경된 값을 사용할 수 있게 합니다. inout키워드를 사용하여 선언하며, 함수를 호출할 때 &를 사용하여 해당 매개변수를 전달합니다.
func increment(_ number: inout Int) { 
number += 2
} 

var x = 5 
increment(&x) // x = 7 으로 바뀜
print("x : \(x)") // x : 7

0개의 댓글