2.3 Functions
Function
Defining
func functionName (parameters) -> ReturnType {
// body of the function
}
Parameters
값 이름: 타입
형식으로 파라미터를 정의한다.
func multiply(num1: Int, num2: Int) {
print(num1 * num2)
}
multiply(num1: 10, num2: 5) // 50
Argument Labels
- 함수를 호출할 때에 보이는 파라미터의 이름과 함수 내부에서 쓰이는 파라미터의 이름을 다르게 정의하여 사용자가 함수를 호출할 때 파라미터의 역할을 이해하기 쉽도록 한다.
// Argument Label 사용 전
func sayHello(person: String, anotherPerson: String) {
print("Hello \(person) and \(anotherPerson)")
}
sayHello(person: "Miles", anotherPerson: "Riley")
// Argument Label 사용
func sayHello(to person: String, and anotherPerson: String) {
print("Hello \(person) and \(anotherPerson)")
}
// 함수 호출 시 파라미터 이름을 알아보기 쉽고 더 간결하다.
sayHello(to: "Miles", and: "Riley")
- 함수 호출 시 파라미터 이름이 필요 없다면
_
를 사용한다.
func add(_ num1: Int, to num2: Int) -> Int {
return num1 + num2
}
let total = add(14, to: 6)
Default Parameter Values
- 자주 쓰이는 파라미터의 값을 기본값으로 설정해 함수 호출시 해당 파라미터의 값을 언급하지 않았을 경우 자동으로 기본값을 삽입해준다.
func display(teamName: String, score: Int = 0) {
print("\(teamName): \(score)")
}
display(teamName: "Wombats", score: 100) // "Wombats: 100"
display(teamName: "Wombats") // "Wombats: 0" (자동으로 score를 기본값인 0으로 설정)
- 기본값을 설정해준 파라미터의 경우 argument label을
_
으로 세팅하지 않도록 하거나, 기본값이 설정된 파라미터들을 뒤로 몰아놓아 컴파일 에러를 방지한다.
func displayTeam(_ teamName: String, _ teamCaptain: String = "TBA", _ hometown: String, score: Int = 0) {
// ...
}
// 의도했던 것: teamName - Dodgers, teamCaptain - TBA, hometown - LA, score - 0
// 컴파일러: teamName - Dodgers, teamCaptain - LA, hometown - ??
displayTeam("Dodgers", "LA") // ERROR: Missing argument for parameter #3 in call
// 기본값이 설정된 파라미터들을 뒤로 몰아놓아 컴파일 에러가 생기지 않는다.
func displayTeam(_ teamName: String, _ hometown: String, teamCaptain: String = "TBA", score: Int = 0)
// teamName - Dodgers, teamCaptain - TBA, hometown - LA, score - 0
displayTeam("Dodgers", "LA")
Return Values
->
를 통해 함수의 반환값의 타입을 정의해준다.
func multiply(num1: Int, num2: Int) -> Int {
return num1 * num2
}
- Swift 5.1 부터 함수에 리턴값이 존재하고, 내부가 1줄로 구성되어 있다면
return
을 생략할 수 있다.
func multiply(num1: Int, num2: Int) -> Int {
num1 * num2
}
func functionName (parameters) -> ReturnType {
// body of the function
}
값 이름: 타입
형식으로 파라미터를 정의한다.func multiply(num1: Int, num2: Int) {
print(num1 * num2)
}
multiply(num1: 10, num2: 5) // 50
// Argument Label 사용 전
func sayHello(person: String, anotherPerson: String) {
print("Hello \(person) and \(anotherPerson)")
}
sayHello(person: "Miles", anotherPerson: "Riley")
// Argument Label 사용
func sayHello(to person: String, and anotherPerson: String) {
print("Hello \(person) and \(anotherPerson)")
}
// 함수 호출 시 파라미터 이름을 알아보기 쉽고 더 간결하다.
sayHello(to: "Miles", and: "Riley")
_
를 사용한다.func add(_ num1: Int, to num2: Int) -> Int {
return num1 + num2
}
let total = add(14, to: 6)
func display(teamName: String, score: Int = 0) {
print("\(teamName): \(score)")
}
display(teamName: "Wombats", score: 100) // "Wombats: 100"
display(teamName: "Wombats") // "Wombats: 0" (자동으로 score를 기본값인 0으로 설정)
_
으로 세팅하지 않도록 하거나, 기본값이 설정된 파라미터들을 뒤로 몰아놓아 컴파일 에러를 방지한다.func displayTeam(_ teamName: String, _ teamCaptain: String = "TBA", _ hometown: String, score: Int = 0) {
// ...
}
// 의도했던 것: teamName - Dodgers, teamCaptain - TBA, hometown - LA, score - 0
// 컴파일러: teamName - Dodgers, teamCaptain - LA, hometown - ??
displayTeam("Dodgers", "LA") // ERROR: Missing argument for parameter #3 in call
// 기본값이 설정된 파라미터들을 뒤로 몰아놓아 컴파일 에러가 생기지 않는다.
func displayTeam(_ teamName: String, _ hometown: String, teamCaptain: String = "TBA", score: Int = 0)
// teamName - Dodgers, teamCaptain - TBA, hometown - LA, score - 0
displayTeam("Dodgers", "LA")
->
를 통해 함수의 반환값의 타입을 정의해준다.func multiply(num1: Int, num2: Int) -> Int {
return num1 * num2
}
return
을 생략할 수 있다.func multiply(num1: Int, num2: Int) -> Int {
num1 * num2
}
Excerpt From
Develop in Swift Fundamentals
Apple Education
https://books.apple.com/kr/book/develop-in-swift-fundamentals/id1581182804?l=en
This material may be protected by copyright.
Author And Source
이 문제에 관하여(2.3 Functions), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@j00hyun/2.3-Functions저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)