2.3 Functions

Joohyun·2022년 4월 5일
0

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
}

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.

profile
Developer

0개의 댓글