Swift
Function
dion_K
2020. 11. 12. 18:15
728x90
안녕하세요:)
오늘은 Function에 대해서 알아보도록 할게요!!
Function은 프로그램의 실행 과정 중에서 독립적으로 처리될 수 있는 부분을 분리하여 구조화한 객체를 의미합니다.
이렇게 독립적으로 작성된 함수는 여러 번 호출하여 사용할 수 있어서 같은 코드를 작성할 필요가 없다는 장점을 가지고 있습니다.
그럼 Swift에서 사용하는 Function에 대해서 알아볼까요?
1. Function
- 함수는 특정 기능을 수행하는 코드 조각입니다.
- 파라미터와 리턴 값을 생략할 수 있습니다.
- 함수의 파라미터는 하나도 없을 수도 있고, 하나 이상일 수도 있습니다.
- 함수를 사용하면 코드의 가독성이 좋아지고 불필요한 코드의 반복을 줄일 수 있습니다.
- 코드를 변경해야 할 때 함수 내부만 수정하면 되므로 유지 보수가 용이해집니다.
- 함수를 만들 때 함수 이름은 lowerCamelCase로 만들고, 직관적인 이름을 사용하는 것이 좋습니다.
func name(parameters) -> ReturnType { // function Head
statement // function body
}
name(parameterts) // 함수 호출
< 매개변수와 리턴값이 없는 함수 >
func printHello() {
print("안녕하세요")
}
printHello() // 안녕하세요
2. Return Value
- 함수에 리턴형이 선언되어 있다면 리턴 다음 표현식을 평가 후 그 결과를 반환해 줍니다.
- 반환 타입이 지정되면 반드시 그 타입에 맞는 값을 반환해야 합니다.
- nil을 반환하려면 함수의 반환 타입이 반드시 옵셔널 타입으로 정의되어 있어야 합니다.
- 함수 호출식이 표현식이고, 함수가 리턴하는 값은 표현식의 결과가 됩니다.
- return은 함수의 실행을 중지합니다.
func add() -> Int {
return 10 + 20
}
add() // 30
func sayHello() -> String {
return "반가워요"
}
sayHello() // 반가워요
func doSomething() {
let r = Int.random(in: 0...100) // 1~100까지의 랜덤 숫자 생성
if !r.isMultiple(of: 2) {
return // r이 홀수이면 함수의 실행을 중지
}
print(r)
}
doSomething()
3. Parameter
- 파라미터는 함수 내부에서 사용할 수 있는 임시 상수입니다.
- 파라미터는 함수가 실행될 때 실행되고, 실행이 완료되면 자동으로 삭제됩니다.
- 파라미터에 기본값을 지정할 수 있고, 기본값을 가지고 있다면 생략이 가능합니다.
- 파라미터 이름은 함수 바디에서 함수로 전달된 값에 접근할 때 사용합니다.
- 파라미터의 스코프는 함수 바디로 제한됩니다.
- 파라미터는 함수를 호출할 때 생성되고, 함수의 실행이 종료되면 자동으로 삭제됩니다.
func name(매개변수: 자료형...) {
statement
}
func add(a: Int, b: Int) -> Int {
// ex) a = 10 파라미터는 함수 바디에서 사용할 수 있는 임시 상수입니다. 값 변경 불가!
return a + b
}
add(a: 10, b: 20) // 30
func echo(message: String, newline: Bool = true) { // 기본값 저장
if newline == true {
print(message, true)
} else {
print(message, false)
}
}
4. Argument Label
- name : Type 파라미터 이름이자 Argument 이름입니다.
- Label name : Type Label이 Argument 이름입니다.
- Argument Label을 사용하는 이유는 함수 이름의 가독성을 높이기 위해 사용하고, 파라미터의 역할을 구분하기 위해서 사용합니다.
- 함수를 호출할 때 Argument 이름을 사용합니다.
- 언더 스코어( _ ) 를 사용해서 생략할 수 있습니다.
- Argument -> 실제로 전달하는 값입니다.
- parameter -> 함수 안에서 사용하는 값입니다.
func printHello(name: String, msg: String) {
print("\(name)님, \(msg)")
}
printHello(name: "동구", msg: "안녕하세요") // 동구님, 안녕하세요
func printHello(to name: String, welcome msg: String) {
print("\(name)님, \(msg)")
}
printHello(to: "동구", welcome: "안녕하세요") // 동구님, 안녕하세요
func sayHello(_ name: String) { //Argument를 와일드카드 패턴으로 생략했습니다.
print("Hello, \(name)")
}
sayHello("Swift") // Hello, Swift
5. Variadic parameter
- 하나의 파라미터로 두 개 이상의 Argument를 전달할 수 있습니다.
- Argument는 배열 형태로 전달됩니다.
- 가변 파라미터는 개별 함수마다 하나씩만 선언할 수 있습니다.
- 가변 파라미터는 기본값을 가질 수 없습니다.
func sum(_ nums: Int...) {
var sum = 0
for num in nums {
sum += num
}
print(sum)
}
sum(1, 2, 3, 4, 5) // 15 Argument 5개
728x90