1️⃣ 반환값이 없는 경우
func 함수이름(매개변수) {
실행할 코드
}
//예시 1
func printWelcome() {
print("Hi there!")
}
printWelcome()
//예시 2 : Accepting parameters
func count(to: Int) {
for i in 1...to {
print("I'm counting: \(i)")
}
}
count(to: 3)
2️⃣ 반환값이 있는 경우
func rollDice() -> Int {
return Int.random(in: 1...6)
}
let result = rollDice()
print(result)
💡 반환값이 있는 경우에서 return 을 생략할 수 있다! (Swift 5.1부터 가능해진 기능)
func greet(name: String) -> String {
name == "Taylor Swift" ? "Oh wow!" : "Hello, \(name)"
}
- 코드 블럭 안에 return이 오로지 한번만 등장할 때, 사용 가능
- 위 코드와 같이 삼항연산자를 사용하면 두 가지의 경우 반환 가능
3️⃣ 여러 값을 반환하는 방법
💡Tuple (튜플)
더보기
var name = (first: "Taylor", last: "Swift")
var person: (name: String, age: Int, isMarried: Bool) = ("서우", 20, false)
- 크기가 고정되어 있다. 즉, 항목을 추가 또는 제거는 불가능하다.
- Tuple을 생성한 후에 Type을 변경할 수 없다.
name.0
name.first
- 0부터 시작하는 숫자 인덱스를 사용해 요소에 접근할 수 있다.
- 이름을 사용하여 항목에 접근할 수 있다.
let (firstName, lastName) = getUser()
print("Name: \(firstName) \(lastName)")
- Tuple을 개별 값으로 분리할 수 있다.
let (firstName, _) = getUser()
print("Name: \(firstName)")
- Tuple의 모든 값이 필요하지 않은 경우, _를 사용하여 해당 부분을 무시할 수 있다.
❗️Dictionary와 달리 어떤 값이 존재하고, 어떤 유형이 있는지 명확하다. 또한 요소를 불러올 때 오타에 대한 위험이 적다.
func getUser() -> (firstName: String, lastName: String) {
(firstName: "Taylor", lastName: "Swift")
}
let user = getUser()
print("Name: \(user.firstName) \(user.lastName)")
- getUser()를 사용해 튜플의 값을 읽을 수 있다.
- Swift는 Tuple의 각 항목에 부여된 이름을 이미 알고 있기에 return을 사용하지 않아도 된다.
- 정확히 크기가 고정되어있을 경우 Tuple을 사용함을 추천
💡 Array (배열)
func getUser() -> [String] {
["Taylor", "Swift"]
}
let user = getUser()
print("Name: \(user[0]) \(user[1])")
- 순서가 중요할 때는 배열 사용 추천 ex) 할 일 목록에 대한 항목을 저장하려는 경우
- 중복 항목이 포함될 경우
💡 Dictionary
func getUser() -> [String: String] {
[
"firstName": "Taylor",
"lastName": "Swift"
]
}
let user = getUser()
print("Name: \(user["firstName", default: "Anonymous"]) \(user["lastName", default: "Anonymous"])")
4️⃣ 매개변수 레이블을 커스텀하기
👉 매개변수 생략
func isUppercase(string: String) -> Bool {
string == string.uppercased()
}
let string = "HELLO, WORLD"
let result = isUppercase(string: string)
- string: string 중복으로 가독성이 좋지 않다.
func isUppercase(_ string: String) -> Bool {
string == string.uppercased()
}
let string = "HELLO, WORLD"
let result = isUppercase(string)
- _를 사용하여 string을 무시한다.
❗️매개변수 이름을 생략하는 주된 이유
👉 함수 이름이 동사이고 첫번째 매개변수가 동사로 작동하는 명사일 경우!
예시⬇️
더보기
- 사람한테 인사할때 greet(person: Seou)보다 greet(Seou)
- 알람을 활성화 enable(alarm: alarm)보다 enable(alarm)
👉 매개변수 이름 변경
func printTimesTables(number: Int) {
for i in 1...12 {
print("\(i) x \(number) is \(i * number)")
}
}
printTimesTables(number: 5)
- 함수 호출 시 더 좋은 가독성을 위해 외부 이름을 변경하고자 한다.
func printTimesTables(for number: Int) {
for i in 1...12 {
print("\(i) x \(number) is \(i * number)")
}
}
printTimesTables(for: 5)
- 외부 이름은 for, 내부 이름은 number 이다.
- 함수를 호출할 때는 외부이름을 사용한다.
- 함수 안에서는 내부 이름을 사용한다.
'iOS > SwiftUI' 카테고리의 다른 글
[Day 9] 클로저(Closure), passing functions into functions (0) | 2023.08.11 |
---|---|
[Day 8] 함수의 매개변수에 기본값 제공, throwing functions (0) | 2023.08.07 |
[SwiftUI] Setting App Icon (0) | 2023.08.05 |
[Day 6] 반복문 : Loop (for, while), break & continue (0) | 2023.08.05 |
[Day 5] 조건문 : if, switch, and the ternary operator (0) | 2023.08.04 |