ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ์ปฌ๋ ‰์…˜ ํƒ€์ž… ( Collection Types )
    Swift 2022. 7. 18. 23:42

    ์•ˆ๋…•ํ•˜์„ธ์š”!! ์˜ค๋Š˜์€ swift์—์„œ์˜ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์— ๊ด€ํ•ด์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

     

    ๐Ÿ“š์ฐธ๊ณ  ์ž๋ฃŒ ๋ฐ ๋งํฌ

     

    Collection Types — The Swift Programming Language (Swift 5.7)

    Collection Types Swift provides three primary collection types, known as arrays, sets, and dictionaries, for storing collections of values. Arrays are ordered collections of values. Sets are unordered collections of unique values. Dictionaries are unordere

    docs.swift.org


    ์ปฌ๋ ‰์…˜ ํƒ€์ž…

    ์ปฌ๋ ‰์…˜ ํƒ€์ž…์ด๋ž€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. 

     

    Swift์—์„œ๋Š” ์ปฌ๋ ‰์…˜ ํƒ€์ž…์œผ๋กœ

    • Array             : ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ ์ปฌ๋ ‰์…˜
    • Set                : ์ˆœ์„œ๊ฐ€ ์—†๊ณ , ๋ฉค๋ฒ„๊ฐ€ ์œ ์ผํ•œ ์ปฌ๋ ‰์…˜ 
    • Dictionary    : ํ‚ค ์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ปฌ๋ ‰์…˜

    โ€ป Array, Set, Dictionary์— ๋ณ€์ˆ˜์ธ var๋กœ ํ• ๋‹นํ•˜๋ฉด ์ปฌ๋ ‰์…˜์€ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ƒ์ˆ˜์ธ let๋กœ ํ• ๋‹นํ•˜๋ฉด ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ๋”๋ณด๊ธฐ

    ์ปฌ๋ ‰์…˜์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. 

    ์ฝ”๋“œ์— ๋Œ€ํ•ด ์‰ฝ๊ฒŒ ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ Swift ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•œ ์ปฌ๋ ‰์…˜์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Swift ์ปฌ๋ ‰์…˜ ํƒ€์ž… ์ข…๋ฅ˜

     

    ๋ฐฐ์—ด ( Array )

    Swift์—์„œ์˜ ๋ฐฐ์—ด์€ ๋™์ผํ•œ ๊ฐ’์˜ ์ˆœ์„œ๊ฐ€ ์ง€์ •๋œ ๊ฐ’์˜ ๋ชฉ๋ก์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Swift๋Š” ์‹ค์ˆ˜๋กœ๋„ ์ž˜๋ชป๋œ ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฐฐ์—ด์— ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋„๋ก ์—„๊ฒฉํ•˜๊ฒŒ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    Array๋Š” ๋ฉค๋ฒ„๊ฐ€ ์ˆœ์„œ(์ธ๋ฑ์Šค)๋ฅผ ๊ฐ€์ง„ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

     

    ๋นˆ ๋ฐฐ์—ด์˜ ์ƒ์„ฑ

    ์ดˆ๊ธฐํ™” ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ Intํ˜• ๋นˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    var someInts = [Int]()
    print("someInts is of type [Int] with \(someInts.count) items.")
    // someInts is of type [Int] with 0 items.
    
    // Int ๋ฐฐ์—ด
    let numberArray = [2, 4, 6, 8, 10, 12, 14]
    // String ๋ฐฐ์—ด
    let stringArray = ["Swift", "Hello", "World"]
    // Double ๋ฐฐ์—ด
    var doubleArray: [Double] = [0.1, 0.3, 0.5] 
    // Float ๋ฐฐ์—ด
    var floatArray = [Float]() // ๋น„์–ด์žˆ์Œ
    someInts.append(3)
    // ๋ฐฐ์—ด์— 3์„ ์ถ”๊ฐ€ ํ–ˆ์Šต๋‹ˆ๋‹ค.
    someInts = []
    // ๋ฐฐ์—ด์„ ๋น„์› ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ์•„์ดํ…œ ํƒ€์ž…์€ ๊ทธ๋Œ€๋กœ Int๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
    ๋”๋ณด๊ธฐ

    append(_: ) : ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋กœ append๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ฐฐ์—ด์˜ ๋์— ๋‹จ์ผ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ๐Ÿ“š ๊ณต์‹๋ฌธ์„œ ๋งํฌ

     

    ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ๋นˆ ๋ฐฐ์—ด ์ƒ์„ฑ

    repeating ๋ฉ”์†Œ๋“œ์™€ count ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ๋นˆ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    var threeDoubles = Array(repeating: 0.0, count: 3)
    // threeDoubles : Double ํƒ€์ž…์˜ [0.0, 0.0, 0.0]
    ๋”๋ณด๊ธฐ

    init(repeating : count: ) : ๋‹จ์ผ ๋ฐ˜๋ณต ๊ฐ’์˜ ์ง€์ •๋œ ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ์ƒˆ ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. repeatedValue๋Š” ๋ฐ˜๋ณตํ•  ์š”์†Œ์ด๋ฉฐ , count๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌ๋œ ๊ฐ’์„ ๋ฐ˜๋ณตํ•  ํšŸ์ˆ˜์ด๋ฉฐ 0 ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๐Ÿ“š ๊ณต์‹ ๋ฌธ์„œ ๋งํฌ

     

    ๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ์ถ”๊ฐ€ํ•œ ๋ฐฐ์—ด์˜ ์ƒ์„ฑ

    + ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ๋ฐฐ์—ด์„ ํ• ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
    // anotherThreeDoubles : [2.5, 2.5, 2.5]
    
    var sixDoubles = threeDoubles + anotherThreeDoubles
    // sixDoubles : [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

     

    ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•œ ๋ฐฐ์—ด์˜ ์ƒ์„ฑ

    [value 1, value 2, value 3] ํ˜•ํƒœ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    var shoppingList: [String] = ["Eggs", "Milk"]
    
    // ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ ์–ธํ•˜๊ธฐ
    var shoppingList = ["Eggs", "Milk"]

     

    ๋ฐฐ์—ด์˜ ์ ‘๊ทผ ๋ฐ ๋ณ€ํ™˜

    ๋ฐฐ์—ด์˜ ์›์†Œ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    print(shoppingList.count)
    // 2

    ๋ฐฐ์—ด์ด ๋น„์—ˆ๋Š”์ง€ ํ™•์ธ

    if shoppingList.isEmpty {
        print("is empty.")
    } else {
        print("is not empty.")
    }
    // is not empty.
    ๋”๋ณด๊ธฐ

    isEmpty : ๋ฌธ์ž์—ด์— ๋ฌธ์ž๊ฐ€ ์—†๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€์šธ ๊ฐ’์ž…๋‹ˆ๋‹ค.

    ๐Ÿ“š ๊ณต์‹๋ฌธ์„œ ๋งํฌ

    ๋ฐฐ์—ด์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€

    shoppingList.append("Four")
    // shoppingList.count = 3
    shoppingList += ["Baking Powder"]
    // shoppingList.count = 4
    shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
    // shoppingList.count = 7
    print(shoppingList)
    //"["Eggs", "Milk", "Four", "Baking Powder", "Chocolate Spread", "Cheese", "Butter"]

    ๋ฐฐ์—ด์˜ ํŠน์ • ์œ„์น˜ ์›์†Œ ์ ‘๊ทผ

    //0๋ฒˆ์จฐ ์ธ๋ฑ์Šค ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์ถœ๋ ฅ
    var firstItem = shoppingList[0]
    // firstItem : "Eggs"
    
    //2๋ฒˆ์จฐ ์ธ๋ฑ์Šค ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์ถœ๋ ฅ
    var threeItem = shoppingList[2]
    // firstItem : "Four"
    shoppingList[4...6] = ["Bananas", "Apples"]
    // 4, 5, 6๋ฒˆ์งธ ์ธ๋ฑ์Šค ์•„์ดํ…œ์„ Banana, Apples๋กœ ๋ณ€ํ™˜
    //"Chocolate Spread", "Cheese", "Butter" ๊ฐ’๋“ค์ด = > "Banana", "Apples"์œผ๋กœ ๋ณ€ํ™˜

    ํŠน์ • ์œ„์น˜์— ์›์†Œ ์ถ”๊ฐ€ / ์‚ญ์ œ / ์ ‘๊ทผ

    //shoppingList ์ฒซ๋ฒˆ์งธ ์œ„์น˜์— "Maple Syrup"์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.
    shoppingList.insert("Maple Syrup", at:0)
    // shoppingList ์ฒซ๋ฒˆ์งธ ์š”์†Œ์—์„œ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐ ํ•ฉ๋‹ˆ๋‹ค.
    let mapleSyrup = shoppingList.remove(at: 0)
    firstItem = shoppingList[0]
    // firstItem : "Eggs"
    let apples = shoppingList.removeLast()
    ๋”๋ณด๊ธฐ

    removeLast () : ์ปฌ๋ ‰์…˜์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 

    ๐Ÿ“š๊ณต์‹๋ฌธ์„œ ๋งํฌ

     

    ๋ฐฐ์—ด์˜ ์ˆœํšŒ

    for-in loop์„ ์ด์šฉํ•ด ๋ฐฐ์—ด์„ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    for item in shoppingList {
        print(item)
    }
    // Eggs
    // Milk
    // Four
    // Baking Powder
    // Bananas

    ๋ฐฐ์—ด์˜ ๊ฐ’๊ณผ ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋Š” enumerated( ) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    for (index, value) in shoppingList.enumerated() {
        print("Item \(index + 1): \(value)")
    }
    // Item 1: Eggs
    // Item 2: Milk
    // Item 3: Four
    // Item 4: Baking Powder
    // Item 5: Bananas
    ๋”๋ณด๊ธฐ

    enumerated() : ์Œ์˜ ์‹œํ€€์Šค ( n ,x )๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ n์€ 0์—์„œ ์‹œ์ž‘ํ•˜๋Š” ์—ฐ์†์ ์ธ ์ •์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  x๋Š” ์‹œํ€€์Šค์˜ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

    ๐Ÿ“š๊ณต์‹๋ฌธ์„œ ๋งํฌ

     

    ์…‹( Set )

    Set์€ ๋™์ผํ•œ ํƒ€์ž…์˜ ๊ณ ์œ ํ•œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€๋งŒ ๋ฐฐ์—ด๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ช…ํ™•ํ•œ ์ˆœ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์˜ ์ˆœ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ค‘๋ณต ๊ฐ’์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด ๋Œ€์‹  Set์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Set๋Š” ์ˆœ์„œ๊ฐ€ ์—†๊ณ  ๋ฉค๋ฒ„๊ฐ€ ์œ ์ผํ•œ ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ์ปฌ๋ ‰์…˜ ํƒ€์ž…๋‹ˆ๋‹ค. Set ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ํƒ€์ž…์ด hashable์ด์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. Swift์—์„œ String, Int, Double, Bool ๊ฐ™์€ ๊ธฐ๋ณธ ํƒ€์ž…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ hashable์ž…๋‹ˆ๋‹ค. Swift์—์„œ Setํƒ€์ž…์€ Set์œผ๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

     

    ๋นˆ Set ์ƒ์„ฑ

    Set<Element>๋กœ ์ž‘์„ฑํ•˜๋ฉฐ ์ดˆ๊ธฐํ™” ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ํŠน์ • ํƒ€์ž…์˜ ๋น„์–ด์žˆ๋Š” Set๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    var letters = Set<Character>()
    print(letters.count)
    // 0
    letters.insert("a")
    letters = []

     

    ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•œ Set ์ƒ์„ฑ

    var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]

    ↓ Swift์˜ ํƒ€์ž… ์ถ”๋ก ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ์–ธ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]

     

    Set์˜ ์ ‘๊ทผ๊ณผ ๋ณ€๊ฒฝ

    isEmpty๋ฅผ ์ด์šฉํ•˜์—ฌ favoriteGenres์•ˆ์— ์š”์†Œ๋“ค์ด ๋น„์—ˆ๋Š”์ง€ ํ™•์ธ

    if favoriteGenres.isEmpty {
        print("is Empty")
    } else {
        print("is not Empty")
    }
    // is not Empty

    insert๋ฅผ ์ด์šฉํ•ด์„œ favoriteGenres "Jazz" ์š”์†Œ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

     

    favoriteGenres.insert("Jazz")

    remove์„ ์ด์šฉํ•˜์—ฌ favoriteGenres ์•ˆ์— ์žˆ๋Š” "Rock" ์ด๋ผ๋Š” ์š”์†Œ๋ฅผ ์ง€์›Œ์ค๋‹ˆ๋‹ค.

    if let removedGenre = favoriteGenres.remove("Rock") {
        print("\(removedGenre)? remove")
    } else {
        print("I never much cared for that.")
    }
    // Rock? remove

    "Funk" ๋ผ๋Š” ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    if favoriteGenres.contains("Funk") {
        print("I get up on the good foot.")
    } else {
        print("It's too funky in here.")
    }
    // It's too funky in here.
    ๋”๋ณด๊ธฐ

    contains (_: ) : ์‹œํ€€์Šค์— ์ง€์ •๋œ ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” boolean๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    ๐Ÿ“š๊ณต์‹๋ฌธ์„œ ๋งํฌ

     

    Set์˜ ์ˆœํšŒ

    for-in loop์„ ์ด์šฉํ•ด Set์„ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    for genre in favoriteGenres {
        print("\(genre)")
    }
    // Classical
    // Hip hop
    // Jazz

     

    Set ๋ช…๋ น

    let oddDigits: Set = [1, 3, 5, 7, 9]
    let evenDigits: Set = [0, 2, 4, 6, 8]
    let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
    
    //2๊ฐœ์˜ ํ•จ์ˆ˜์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์œผ๋กœ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    oddDigits.union(evenDigits).sorted()
    // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    //2๊ฐœ์˜ ํ•จ์ˆ˜์—์„œ ๊ณตํ†ต ๊ฐ’๋งŒ์œผ๋กœ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    oddDigits.intersection(evenDigits).sorted()
    // []
    
    //ํŠน์ • ํ•จ์ˆ˜์— ์žˆ๋Š” ๊ฐ’์œผ๋กœ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
    // [1, 9]
    
    // 2๊ฐœ์˜ ํ•จ์ˆ˜์—์„œ ๊ณตํ†ต ๊ฐ’์„ ์ œ์™ธํ•œ ๊ฐ๊ฐ์˜ ์„ธํŠธ์—๋งŒ ์žˆ๋Š” ๊ฐ’์œผ๋กœ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
    // [1, 2, 9]
    ๋”๋ณด๊ธฐ

    ๐Ÿ“š   union    /     intersection    /    subtracting   / symmetricDifference

     

    Set์˜ ๋ฉค๋ฒ„์‹ญ๊ณผ ๋™๋“ฑ ๋น„๊ต

    Set์˜ ๋™๋“ฑ ๋น„๊ต์™€ ๋ฉค๋ฒ„ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด  ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    •  == 
    • isSuperset(of: )                 : ์ฃผ์–ด์ง„ ์ง‘ํ•ฉ์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” boolean๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • isStrictSubset(of: )           : ์ง‘ํ•ฉ์ด ์ฃผ์–ด์ง„ ์‹œํ€€์Šค์˜ ์—„๊ฒฉํ•œ ํ•˜์œ„ ์ง‘ํ•ฉ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” boolean๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • isStrictSuperset(of :)        : ์ง‘ํ•ฉ์ด ์ฃผ์–ด์ง„ ์‹œํ€€์Šค์˜ ์—„๊ฒฉํ•œ ์ƒ์œ„ ์ง‘ํ•ฉ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” boolean๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • isDisjoint(with : )               :  ์ง‘ํ•ฉ์— ์ฃผ์–ด์ง„ ์ง‘ํ•ฉ๊ณผ ๊ณตํ†ต๋˜๋Š” ๊ตฌ์„ฑ์›์ด ์—†๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” boolean๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

     

     

    let houseAnimals: Set = ["๐Ÿถ", "๐Ÿฑ"]
    let farmAnimals: Set = ["๐Ÿฎ", "๐Ÿ”", "๐Ÿ‘", "๐Ÿถ", "๐Ÿฑ"]
    let cityAnimals: Set = ["๐Ÿฆ", "๐Ÿญ"]
    
    houseAnimals.isSubset(of: farmAnimals)
    // true
    farmAnimals.isSuperset(of: houseAnimals)
    // true
    farmAnimals.isDisjoint(with: cityAnimals)
    // true

     

     

    ์‚ฌ์ „ ( Dictionaries )

    ๋”•์…”๋„ˆ๋ฆฌ๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋™์ผํ•œ ํƒ€์ž…์˜ ๊ฐ’์˜ ๋ชฉ๋ก์„ ์ €์žฅํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”•์…”๋„ˆ๋ฆฌ๋Š” key๋ผ๋Š” ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋™์ผํ•œ key๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. key๋Š” ์ •์ˆ˜๋‚˜ ๋ฌธ์ž์—ด์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋”•์…”๋„ˆ๋ฆฌ ๋‚ด์—์„œ ๊ณ ์œ ํ•œ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ํ•ญ์ƒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ƒ์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    [ key : Value ] ํ˜•ํƒœ๋กœ Dictionary๋ฅผ ์„ ์–ธํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋”๋ณด๊ธฐ

    โ€ป   Swift์˜ Dictionaryํƒ€์ž…์€ Foundation ํด๋ž˜์Šค์˜ NSDictionary๋ฅผ bridgeํ•œ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

     

    ๋นˆ Dictionary์˜ ์ƒ์„ฑ

    var namesOfIntegers = [Int: String]()

    Key๊ฐ’์€ Intํ˜•์ด๊ณ  Value๋Š” Stringํ˜•์œผ๋กœ ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค.

    namesOfIntegers[16] = "sixteen"
    namesOfIntegers = [:]
    // ๋นˆ ์‚ฌ์ „

     

    ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•œ Dictionary์˜ ์ƒ์„ฑ

    [ key 1: value 1, key 2: value 2, key 3: value 3, key 4: value 4 ]ํ˜•ํƒœ๋กœ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]

     

     

    Dictionary์˜ ์ ‘๊ทผ๊ณผ ๋ณ€๊ฒฝ

    print(airports.count)
    // 2

    count๋ฅผ ํ†ตํ•ด airports์•ˆ์— ๋ช‡ ๊ฐœ์˜ ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

     

    if airports.isEmpty {
        print("is empty.")
    } else {
        print(" is not empty.")
    }
    // is not empty.

    isEmpty๋ฅผ ์ด์šฉํ•˜์—ฌ ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ๋น„์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    airports["LHR"] = "London"
    // the airports dictionary now contains 3 items

    ๋”•์…”๋„ˆ๋ฆฌ ๊ฐ’์„ ํ• ๋‹นํ•ด์ค๋‹ˆ๋‹ค.

     

     


     

    ์ปฌ๋ ‰์…˜ ํƒ€์ž…์— ๊ด€ํ•˜์—ฌ ์ •๋ฆฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ฆฌ๋ฅผ ํ•˜๋Š” ์ค‘๊ฐ„์— ์ž๋™ ์ €์žฅ์ด ์•ˆ ๋˜์–ด ์ ˆ๋ฐ˜์ด ๋‚ ์•„๊ฐ€ ๐Ÿ˜ก ํ›„...

    ๋‹ค์Œ๋ถ€ํ„ด ๊พธ์ค€ํžˆ ์ž„์‹œ์ €์žฅ์„ ๋ˆŒ๋Ÿฌ๊ฐ€๋ฉด์„œ ๊ธ€์„ ์ •๋ฆฌํ•ด์•ผ ๋  ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค!!!

     

     

     

     

Designed by Tistory.