소피it블로그

[Swift] 100 Days of Swift - Day 2 정리 본문

개발_iOS/스위프트

[Swift] 100 Days of Swift - Day 2 정리

sophie_l 2022. 3. 25. 23:59

https://www.hackingwithswift.com/100/2

 

Day 2 – 100 Days of Swift

Follow the 100 Days of Swift and learn to build apps for free.

www.hackingwithswift.com

게으름 피우다가 이제서야 부랴부랴 하루치 듣고 정리하려고 하는데, 하루 분량이 1분짜리 강의 10개 내외라 별 것 아니라고 생각했던 것을 벌써 반성하게 된다.

스위프트만 한다면 아마 별 것 아니게 느껴지겠지만 이것저것 해야하는 게 많은 나로서는 이 짧은 강의마저도 은근한 일거리로 느껴진다. 그 이유는 아마도 파이썬과 꽤나 다른 스위프트 코드의 모양새, 단순히 듣고 끝내는 게 아니라 정리해서 내 것으로 만들어야 한다는 부담감 아닌 부담감, 그리고 정리할 때 수업에서 선생님이 들어준 예시를 그대로 가져다 쓰기보다는 내 나름대로 새로 작성해보고 싶다는 욕심 때문일 것이다. 언제나 그렇듯 완벽주의적인 성향이 날 괴롭게 한다. 일단 할 수 있는데까지는 해보되, 가장 기본 원칙인 "하루에 1일 분량은 꼭 듣고, 꼭 기록 남기기" 만큼은 지켜야겠다.

역시나 새로 알게 된 부분이나 확실히 익히지 못한 부분 위주로 정리한다.

 

1. Array: Type annotation을 쓴다면 어레이 즉 배열은 [ ] 기호와 함께 써줘야 한다.

var myArray: [String] = ["this", "is", "my", "array"]
// 그 밖에도 [Int], [Double], [Bool]

2. Set 만들 때 형식

let mySet = Set(["a", "b", "c",])

3. Tuple

var myTuple = (gender: "female", height: "157")

myTuple.0
myTuple.gender

4. Dictionary: 파이썬에서와 다르게 { }가 아닌 [ ]를 써준다.

let babies = [ "cat": "kitten", "dog": "puppy"]
// [String: String]형식의 딕셔너리

5. Dictionary default: 딕셔너리에 없는 값을 검색할 때 디폴트 value를 넣어줄 수 있다.

babies["rabbit", default: "unknown"]

6. Empty Collections: 빈 컬렉션을 만들 때는 배열, 딕셔너리와 그 이외로 구분된다.

var myDict = [String: Int]()
var myArray = [Bool]()

var mySet = Set<String>()

// 다만 빈 딕셔너리와 배열은 이 형식으로도 만들어줄 수 있음.
var myDict = Dictionary<String, String>()
var myArray = Array<Int>()

7. Enum: 몇 가지 선택지를 둔 상황에서 고르게 할 때 사용함. 특히 철자나 표현 등을 혼용하여 쓸 위험이 있을 때 enum을 사용하면 좋다.

enum Pets { case dog
	case cat
}

let pet = Pets.cat

8. Enum의 associated values

enum Activity { case reading(title: String)
	case sleeping(place: String)
	case eatingCandies(counting: Int)
}

let reading = Activity.reading(title: "Wuthering Heights")

9. Enum의 raw value: 사실 로 밸류는 아직 정확히 무슨 개념인지 이해를 못하긴 했다. 어떤 상황에서 쓰여야 하는지 등... 일단 Int의 경우 스위프트에선 기본적으로 0부터 1씩 늘려가면서 자동으로 번호를 할당해주는데, 본인이 임의의 번호를 할당해줘도 된다. 그 경우 해당 번호 이후부터 1씩 더해가며 자동으로 생성된다.

enum Days: Int { case Sunday
	case Monday
	case Tuesday
}

// 이 경우 Sunday부터 0, 1, 2 순으로 자동으로 번호가 할당된다.

let monday = Days(rawValue: 1)