소피it블로그
[Swift] 100 Days of Swift - Day 14 정리 본문
https://www.hackingwithswift.com/100/14
1. external parameter name을 정할 때 _를 사용하면 편리한 경우가 많지만, "in", "for", "with"와 같은 이름을 사용하는 게 더 스위프트적인 방식이다. 의미있는 internal names와 함께 사용.
2. 옵셔널
func getFood(mood: String) -> String? {
if mood == "sad" {
return nil
} else {
return "Burger"
}
}
var food: String?
food = getFood(mood: "happy")
// 혹은
var food = getFood(mood: "happy")
// 처럼 옵셔널로 선언해주어야 한다.
/* 만일
var food: String
이라고 하면 코드가 작동하지 않을 것임 */
3. enumeration: possible value를 정해줌으로써 애매한 표현 등의 문제를 피하게 해줌
enum MoodType {
case happy, sad, mad, annoyed, bored
}
/*
enum MoodType {
case happy
case sad
case mad
case annoyed
case bored
}
처럼 써줄 수도 있음
*/
func getFood(mood: MoodType) -> String? {
if mood == MoodType.sad { // .sad로 적어줘도 됨
return nil
} else {
return "Burger"
}
}
getFood(mood: .annoyed)
enum MoodType {
case happy
case sad
case mad(intensity: Int)
case annoyed
case bored
}
func getFood(mood: MoodType) -> String? {
switch mood {
case .sad:
return nil
case .mad(let intensity) where intensity > 50:
return "NOT IN THE MOOD"
case .happy, .mad:
return "Burger"
case .annoyed, .bored:
return "Hot Pot"
}
}
getFood(mood: MoodType.mad(intensity: 30))
스위프트에서 가장 강력한 기능 중 하나는 enumerations가 사용자가 정의하여 부착하는 값을 가질 수 있다는 것.
case 안에서 let과 where을 사용함으로써 해당 조건이 참일 때만 해당 케이스에 걸리게 함.
4. class initializer: 만들 때 func 없이 init만 써줌. 구조체와 다르게 memberwise initializer가 없기 때문에 따로 이니셜라이저를 만들어줘야 함. 이외에 옵셔널을 쓰거나 default value를 줄 수도 있으나 직접 이니셜라이저를 구현하는 게 가장 좋은 방법.
5. 클래스 상속과 오버라이딩
class FBI {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func say() {
print("Put your hands where I can see them")
}
}
class DrSpencerReid: FBI {
var numberOfDegrees: Int
init(name: String, age: Int, numberOfDegrees: Int) {
self.numberOfDegrees = numberOfDegrees
super.init(name: name, age: age)
}
override func say() {
print("This is calm and it's doctor")
}
}
'개발_iOS > 스위프트' 카테고리의 다른 글
[Swift 공식문서] The Basics 정리 (1) - Constants and Variables 변수와 상수 (0) | 2022.05.09 |
---|---|
[Swift] 100 Days of Swift - Day 15 정리 (0) | 2022.04.02 |
[Swift] 100 Days of Swift - Day 13 정리 (0) | 2022.04.01 |
[Swift] 100 Days of Swift - Day 12 정리 (0) | 2022.03.31 |
[Swift] 100 Days of Swift - Day 11 정리 (0) | 2022.03.29 |