스위프트의 세트

Swift에 대한 간략한 소개



Swift는 안전 기능 및 소프트웨어 디자인 패턴을 포함하는 현대적인 접근 방식을 사용하여 만든 Apple에서 개발한 언어입니다. 이름에서 알 수 있듯이 swift는 빠르고 안전하며 사용하기 쉽습니다. 기본적으로 C 기반 제품군(C, C++ 및 Objective-C)을 대체합니다. 앱을 만드는 데 사용할 수 있으며 클라우드 서비스에도 사용할 수 있으며 가장 빠르게 성장하는 언어 중 하나입니다.

스위프트의 세트



집합은 고유한 값의 정렬되지 않은 컬렉션입니다. 사전은 키-값 연관의 정렬되지 않은 컬렉션입니다. 집합은 주로 사전의 하위 집합(일부)입니다. Sets에서 정의된 모든 값은 고유하고 해싱을 통해 값을 저장하므로 값이 고정된 순서로 저장되지 않고 액세스하는 동안 순서가 달라질 수 있습니다.

집합을 정의하는 구문




var setName : Set<DataType> = [values]


여기서 전달된 데이터 유형은 Hashable 유형이어야 합니다.

해싱



해싱은 모든 값에 대해 고유한 ID를 생성하는 것을 의미합니다.

코드 예




var SamsungSmartphone : Set<String> = ["Android", "Camera" , "Samsung Pay"] //hashing
var AppleIPhone : [String] = ["iOS" , "Camera" , "Apple Pay"]

print(SamsungSmartphone) // ["Camera", "Android", "Samsung Pay"]
print(AppleIPhone) // ["iOS", "Camera", "Apple Pay"]


**참고: 해싱 프로세스로 인해 세트가 정렬되지 않은 경우 인쇄 순서가 다를 수 있습니다.

내장 기능




//Below are two sets with similarities and some differences in both sets
var SamsungSmartphone : Set<String> = ["Android", "Camera" , "Samsung Pay"] //hashing
var AppleIPhone : [String] = ["iOS" , "Camera" , "Apple Pay"]

print(SamsungSmartphone)
print(AppleIPhone)

//Inbuilt Functions

// Intersection returns the element common in Both sets
print(SamsungSmartphone.intersection(AppleIPhone)) // ["Camera"]

// symmetricDifference returns all the elements that are not common in both sets
print(SamsungSmartphone.symmetricDifference(AppleIPhone)) // ["Samsung Pay", "Apple Pay", "iOS", "Android"]

// union returns all the elements in both sets
print(SamsungSmartphone.union(AppleIPhone)) // ["Android", "Samsung Pay", "Apple Pay", "Camera", "iOS"]

// Returns the elements in first set that do not match second set
print(SamsungSmartphone.subtracting(AppleIPhone)) // ["Android", "Samsung Pay"]

// Inserting Value in Set
SamsungSmartphone.insert("Samsung Watch")

// Finding Values in Set
print(SamsungSmartphone.contains("Android")) //true
print(SamsungSmartphone.contains("Andoid")) // false


사용자 정의 세트



이제 사용자 지정 집합을 만드는 방법을 살펴보겠습니다.

struct Smartphone : Hashable {
    let name : String
    let model : String
}

let smartphoneObj : Set<Smartphone> = [Smartphone(name: "Apple", model: "iPhone"), Smartphone(name: "Samsung", model: "S9")]
for smartphone in smartphoneObj {
    print(smartphone.hashValue)
}


//Output:-
// Some random id
//Some random id


여기에서 구조체를 만들고 그 안에 몇 가지 속성을 선언했으며 여기에서 객체를 만들 때 Set의 기능을 활용할 수 있도록 Hashable 프로토콜을 준수합니다.

여기에서 출력은 세트 매개변수에 다른 매개변수를 전달하고 모든 요소가 세트에서 고유하다는 것을 알고 있으므로 2개의 임의 ID가 됩니다. 그렇다면 두 요소에 매개변수와 동일한 값을 지정하면 어떻게 될까요? 2개의 임의 ID 또는 단일 임의 ID를 인쇄합니까?

보자

struct Smartphone : Hashable {
    let name : String
    let model : String
}

let smartphoneObj : Set<Smartphone> = [Smartphone(name: "Apple", model: "iPhone"), Smartphone(name: "Apple", model: "iPhone")]
for smartphone in smartphoneObj {
    print(smartphone.hashValue)
}

//Output :- 
//Some random id


하나의 단일 ID를 인쇄합니다. 왜요? 고유성을 유지하고 둘 다에 해당하는 하나의 hashValue를 생성하기 때문에 고유성을 유지하기 위해 둘 모두를 동일한 해시 ID에 매핑합니다.

이것은 모두 스위프트의 세트에 관한 것이었습니다. 도움이 되었기를 바랍니다. 다음 포스팅에서 만나요.

좋은 웹페이지 즐겨찾기