📕 iOS/100 Days of Swift

[Day 2] arrays, dictionaries, sets, and enums

이오🐥 2023. 4. 6. 23:06
Lynch’s Law says
“when the going gets tough, everyone leaves.”

 1.  Arrays 

let john = "John Lennon"
let paul = "Paul McCartney"
let george = "George Harrison"
let ringo = "Ringo Starr"

let beatles = [john, paul, george, ringo]

 


 2. Sets 

Set은 순서가 없고, 중복된 값을 갖지 않는다.

만약 중복된 값을 또 넣는다면, 하나만 남게 된다.

let colors = Set(["red", "green", "blue"])
let arrayOfCategories: [String] = ["Swift", "Debugging"]
let setOfcategories: Set<String> = ["Swift", "Debugging"]

 


 3. Tuples 

Tuple은 고정된 크기를 가지고 있어서 item을 추가하거나 삭제할 수 없다. 처음 만들 때와 같은 타입으로만 있을 수 있으며, 순서나 이름으로 값에 접근할 수 있다. 하지만, 존재하지 않는 숫자나 이름으로 읽을 수 없다.

(Tuple은 자주 쓰이는 것 같진 않다ㅎㅎ..)

var name = (first: "Taylor", last: "Swift")

name.0
name.first

 


 4. Arrays  vs  sets  vs  tuples 

Array, Set, Tuple은 비슷해 보이지만 쓰임이 다르다.

 

데이터의 고정된 위치나 이름이 있고, 특정한 고정된 collection이 필요하다면, Tuple.

겹치지 않는 값들을 쓰거나 특정 값이 있는지 빠르게 확인할 때, Set.

중복 가능하고, 값들의 순서를 사용해야 할 때, Array.

 

Remember: arrays keep the order and can have duplicates, sets are unordered and 
can’t have duplicates, and tuples have a fixed number of values of fixed types inside them.

 


 5. Dictionaries 

Array와 비슷한 Collection이지만, 숫자 위치 대신에 anything you want로 값에 접근할 수 있다.

let heights = [
    "Taylor Swift": 1.78,
    "Ed Sheeran": 1.73
]

heights["Taylor Swift"]

type annotation을 쓰려면, 각괄호를 쓰면 된다. [String: Double] 이렇게!

 


 6. Dictionary default values 

Dictionary에서 없는 key를 읽으려고 하면, nil을 반환한다. 그래서 Dictionary에 기본값을 부여할 수 있다.

favoriteIceCream["Charlotte", default: "Unknown"]

 


 7. Creating empty collections 

Arrays, sets, and dictionaries는collections라고 부른다.

비어있는 collection을 만드는 방법을 알아보자.

var teams = [String: String]()
var scores = Dictionary<String, Int>()

var results = [Int]()
var results = Array<Int>()

var words = Set<String>()
var numbers = Set<Int>()

 


 8. Enumerations 

enum이라고 불리는 Enumeration은

 a way of defining groups of related values in a way that makes them easier to use이다.

enum Result {
    case success
    case failure
}

let result4 = Result.failure

 


 9. Enum associated values 

enum을 꽤 사용했지만, 상세 값을 설정해 주는 건 처음 봤다!

명사에 형용사를 더한다고 생각하면 되는데,

각 case에 상세 정보를 더할 수 있다.

enum Activity {
    case bored
    case running(destination: String)
    case talking(topic: String)
    case singing(volume: Int)
}

let talking = Activity.talking(topic: "football")

 


 10. Enum raw values 

enum에 값을 할당할 수 있다!

아래 코드처럼 earth는 2를 부여받을 수 있다.

enum Planet: Int {
    case mercury
    case venus
    case earth
    case mars
}

let earth = Planet(rawValue: 2)

하지만, 지구는 두 번째 행성은 아니니까..

아래 코드처럼 mercury에 1을 부여해서 earth를 3으로 만들어줄 수 있다.

enum Planet: Int {
    case mercury = 1
    case venus
    case earth
    case mars
}

 


11. Complex types: Summary 

 


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