Swift Set이란?(Collection Type 이해)

7759 단어 Swiftsetdatatype

Collection Type 의 Set 으로 사용


주의: 코드와 내용 대부분은 공식 사이트에서 번역한 것입니다.자신의 총결산으로 남겼다.
Collection Type은 숫자 값을 저장하는 블록으로, swift에서 미리 준비된 데이터 유형입니다.
세 개는 swfit의 CollectionType입니다.

* 공식 웹사이트 다이어그램

Set의 피쳐

  • 고유한 데이터를 유지합니다.
  • 단일 데이터 유형 선택
  • 순서는 상관없다
  • 독특한 데이터만 저장하기 때문에 같은 데이터를 추가하면 무시됩니다.순서와 상관없이 저장된 순서도 승강 순서에 따라 인쇄됩니다.
    set.swift
    var myset:Set = ["Mike","Mike","Cathy","Malcom"]
    print(myset) // ["Malcom", "Cathy", "Mike"] Mikeが一つない!
    
    Set에 데이터를 넣을 때 데이터 Type은 해싱할 수 있어야 합니다.
    Hashable 데이터 유형 = 가능한 데이터 유형을 비교합니다.

    Hashable data type 예


    String, Int, Bool, Double, Flat, Character 등

    Hashable 데이터 형식 예가 아님


    Class, Dictionary, Set, Arry 등
    non-hashable.swift
    class MyClass{ var num:Int = 0 }
    var myClass1 = MyClass()
    var myClass2 = MyClass()
    var mySet2:Set = [myClass1, myClass2] //エラー!!
    
    ünon-hashable 클래스를 저장하려고 하면 오류가 발생합니다.

    설정에 여러 데이터 형식을 저장할 수 있습니까?


    못 하는 것도 아니지만 귀찮으니까 솔직하게 Aray를 사용하세요.
    AnyType.swift
    //Setの場合
    var mySet2:Set<AnyHashable> = ["Mike",5,"Cathy","Malcom", 7]
    print(mySet2)//[AnyHashable(5), AnyHashable("Malcom"), AnyHashable(7), AnyHashable("Cathy"), AnyHashable("Mike")]
    
    
    //Arrayとの比較
    var myArray:[Any] = ["my","mum", 1, 5]
    print(myArray) //["my", "mum", 1, 5]
    
    나는 AnyHashable에 출연한 적이 있는데, 역시 번거롭다.

    Set에 저장 + 획득 & 기본 방법


    아레이의 방법과 같은 부분도 많다.
    setFunctions.swift
    var mySet:Set = [3,5,7,8,9,19]
    
    print(mySet.count) //6
    print(mySet.isEmpty) //false
    
    mySet.insert(20)
    print(mySet) //[19, 20, 9, 5, 7, 3, 8]
    
    mySet.remove(5)
    print(mySet) //[19, 20, 9, 7, 3, 8]
    
    print(mySet.contains(100)) //false
    
    var sortedSet = mySet.sorted()
    print(sortedSet)//[3, 7, 8, 9, 19, 20]
    
    마지막 방법처럼 변수를 만들어서 정렬할 수도 있다.

    Set Operations


    셋에서 설정을 비교하고 데이터를 얻을 수 있는 편리한 방법이 있습니다!만약 a와 b가 한 조라면 다음과 같이 조합할 수 있다.

    * 공식 사이트
    let oddDigits: Set = [1, 2, 5, 6, 9]
    let evenDigits: Set = [0, 2, 4, 6, 8]
    let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]      
    
    print(oddDigits.union(evenDigits).sorted())
    //[0, 1, 2, 4, 5, 6, 8, 9]
    
    print(oddDigits.intersection(evenDigits).sorted())
    // [2, 6]
    
            print(oddDigits.subtracting(singleDigitPrimeNumbers).sorted())
    // [1, 6, 9]
    
          print(oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted())
    // [1, 3, 6, 7, 9]
    
    데이터가 독특하면 이거 쓸 수 있어서 최고예요.

    Set Membership & Equality


    간단히 말해서 Set 간의 컨텐트를 비교하고 Bool을 반환하는 방법입니다.
    let houseAnimals: Set = ["🐶", "🐱"]
    let farmAnimals: Set = ["🐮", "🐔", "🐑", "🐶", "🐱"]
    let cityAnimals: Set = ["🐦", "🐭"]
    
    print(houseAnimals.isSubset(of: farmAnimals))
    // true
    print(farmAnimals.isSuperset(of: houseAnimals))
    // true
    print(farmAnimals.isDisjoint(with: cityAnimals))
    // true
    
    

    참고 문헌

  • 공식 사이트에서 번역 중
  • Use Your Loaf 참조
  • 좋은 웹페이지 즐겨찾기