Swift Setler: Nasıl Kullanılır ve Neden? (Örneklerle)

Bu eğitimde setler, setler oluşturma, onları değiştirme ve setlerdeki bazı genel işlemler hakkında bilgi edineceksiniz.

Önceki Swift Arrays makalesinde, sıralı bir listede birden çok değeri tutabilen dizi oluşturmayı öğrendik.

Ancak, bir listenin bir değeri yalnızca bir kez tutabileceğinden emin olmamız gerekirse, Swift'de bir set kullanırız.

Set nedir?

Kümeler, sıralanmamış bir listede birden çok veri türü değerini tutabilen ve kapta benzersiz öğe sağlayan (yani, her veri yalnızca bir kez görünür) bir kaptır.

Sırasız liste, öğeleri Kümedeki öğeleri tanımladığınız sırayla alamayacağınız anlamına gelir.

Diziler yerine Set kullanmanın ana avantajı, bir öğenin yalnızca bir kez görünmesini sağlamanız gerektiğinde ve öğelerin sırası önemli olmadığında ortaya çıkar.

Bir sette saklanan değerler hashable olmalıdır . Bu, bir hashValue özelliği sağlaması gerektiği anlamına gelir. Bu önemlidir çünkü kümeler sırasızdır ve kümelerin öğelerine erişmek için hashValue kullanılır.

Swift'in temel tiplerinin hepsi (örneğin String, Int, Double, ve Bool) varsayılan olarak hashable, ve set değer türleri olarak kullanılabilir. Bununla birlikte, Swift'de bir sette saklanabilen Hashable Type'ınızı da oluşturabilirsiniz.

Swift ile set nasıl ilan edilir?

Türü Set olarak ve ardından içinde depolayabileceği Veri türünü belirterek boş bir küme oluşturabilirsiniz.

Örnek 1: Boş bir küme bildirmek

 let emptyIntSet:Set = () print(emptyIntSet) 

VEYA

 let emptyIntSet:Set = Set() print(emptyIntSet) 

Programı çalıştırdığınızda, çıktı:

 ()

Yukarıdaki programda, Setbirden çok tamsayı değerini saklayabilen ve 0 değeriyle başlatılan sabit bir emptyIntSet türü tanımladık .

Swift bir tür çıkarım dili olduğundan, Veri Türünü belirtmeden de doğrudan küme oluşturabilirsiniz, ancak derleyicinin türünü şu şekilde çıkarabilmesi için bazı değerlerle başlatmanız gerekir:

Örnek 2: Bir seti bazı değerlerle bildirme

 let someIntSet:Set = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntSet) 

Programı çalıştırdığınızda, çıktı:

 (2, 4, 9, 5, 6, 7, 3, 1, 8)

Yukarıdaki programda, türü açıkça belirtmeden Tamsayı kümelerini saklayabilen sabit bir someIntSet tanımladık. Ancak :Setdeğişkeni tanımlarken yazmamız gerekiyor aksi halde Swift bizim için bir dizi oluşturacak.

Ayrıca diziler olarak kümeyi parantez kullanarak 1, 2, 3, 4, 5, 6, 7, 8, 9 değerleriyle başlattık ().

Öğrendiğiniz gibi print(someIntSet), set içindeki değerleri olarak yazdırmaya çalıştığınızda , sonuçları sette tanımladığınızdan farklı bir sırada alacaksınız çünkü tanımlı bir sıralama olmadan değeri depoluyor. Bu nedenle, siparişe her eriştiğinizde değişir.

Örnek 3: Yinelenen değerlere sahip bir kümeyi bildirme

 let someStrSet:Set = ("ab","bc","cd","de","ab") print(someStrSet) 

Programı çalıştırdığınızda, çıktı:

 ("de", "ab", "cd", "bc")

Yukarıdaki programda, sette yinelenen bir ab değeri tanımladık . Ve. kullanarak set içindeki değere erişmeye çalıştığımızda print(someStrSet), yinelenen değer setten otomatik olarak kaldırılır. Bu nedenle set, içindeki benzersiz öğeleri / değerleri garanti eder.

Ayrıca Swift'de kendi özel Hashable türünüzle bir set ilan edebilirsiniz. Daha fazla bilgi edinmek için Swift Hashable'ı ziyaret edin.

Swift'de set öğelerine nasıl erişilir?

Diziler olarak alt simge sözdizimini kullanan bir kümenin öğelerine erişemezsiniz. Bunun nedeni kümelerin sıralanmamış olması ve öğelere erişmek için indislere sahip olmamasıdır.

Bu nedenle, sete yöntemlerini ve özelliklerini veya for-in döngülerini kullanarak erişmeniz gerekir.

Örnek 4: Bir kümenin öğelerine erişim

 var someStrSet:Set = ("ab", "bc", "cd", "de") for val in someStrSet ( print(val) ) 

Programı çalıştırdığınızda, çıktı:

 de ab cd bc 

Yukarıdaki programda, vali bir kümenin elemanlarından farklı bir sırada elde ederiz çünkü kümeler dizilerden farklı olarak sıralanmamışlardır.

Aşağıdaki gibi, değeri doğrudan kümeden kaldırarak bir kümenin öğesine de erişebilirsiniz:

Örnek 5: remove () kullanarak bir kümenin öğelerine erişim

 var someStrSet:Set = ("ab", "bc", "cd", "de") let someVal = someStrSet.remove("cd") print(someVal) print(someStrSet) 

Programı çalıştırdığınızda, çıktı:

 İsteğe bağlı ("cd") ("de", "ab", "bc") 

Yukarıdaki programda, remove yönteminin isteğe bağlı bir dizge döndürdüğünü görebilirsiniz. Bu nedenle, aşağıdaki gibi isteğe bağlı işlem yapmanız önerilir. Opsiyonlar hakkında daha fazla bilgi için Swift Opsiyonlarını ziyaret edin.

Örnek 6: remove () için isteğe bağlı işlem

 var someStrSet:Set = ("ab", "bc", "cd", "de") if let someVal = someStrSet.remove("cd") ( print(someVal) print(someStrSet) ) else ( print("cannot find element to remove") ) 

Programı çalıştırdığınızda, çıktı:

 cd ("de", "ab", "bc") 

Bir sete yeni eleman nasıl eklenir?

insert()Swift'deki yöntemi kullanarak bir kümeye yeni bir öğe ekleyebilirsiniz .

Örnek 7: insert () kullanarak yeni eleman ekleyin

 var someStrSet:Set = ("ab", "bc", "cd", "de") someStrSet.insert("ef") print(someStrSet) 

Programı çalıştırdığınızda, çıktı:

 ("ab", "de", "cd", "ef", "bc")

In the above program, we used the set's insert() method to add a new element to a set. Since, sets are unordered, the position of the inserted element isn't known.

Set Operations

Another main advantage of using Sets is you can perform set operations such as combining two sets together, determining which values two sets have in common etc. This operations are similar to the Set operation in Mathematics.

1. Union

The union of two sets a and b is the set of elements which are in a, or b, or in both a and b.

 let a: Set = (1, 3, 5, 7, 9) let b: Set = (0, 2, 4, 6, 8) print(a.union(b)) 

When you run the above program, the output will be:

 (8, 2, 9, 4, 5, 7, 6, 3, 1, 0)

2. Intersection

The intersection of two sets a and b is the set that contains all elements of a that also belong to b.

 let a: Set = (1, 3, 5, 7, 9) let b: Set = (0, 3, 7, 6, 8) print(a.intersection(b)) 

When you run the above program, the output will be:

 (7, 3)

Therefore, print(a.intersection(b)) outputs a new set with values (7, 3) that are common in both a and b.

3. Subtracting

The subtraction of two sets a and b is the set that contains all elements of a but removing the elements that also belong to b.

 let a: Set = (1, 3, 5, 7, 9) let b: Set = (0, 3, 7, 6, 8) print(a.subtracting(b)) 

When you run the above program, the output will be:

 (5, 9, 1)

Therefore, print(a.subtracting(b)) outputs a new set with values (5, 9, 1).

4. Symmetric Difference

The symmetric difference of two sets a and b is the set that contains all elements which are in either of the sets but not in both of them.

 let a: Set = (1, 3, 5, 7, 9) let b: Set = (0, 3, 7, 6, 8) print(a.symmetricDifference(b)) 

When you run the above program, the output will be:

 (5, 6, 8, 0, 1, 9)

Therefore, print(a.symmetricDifference(b)) outputs a new set with values (5, 6, 8, 0, 1, 9).

Set Membership and Equality Operations

Set Equality

You can use == operator to check whether two sets contains same elements or not. It returns true if two sets contains same elements otherwise returns false.

Example 5: Set equality operations

 let a: Set = (1, 3, 5, 7, 9) let b: Set = (0, 3, 7, 6, 8) let c:Set = (9, 7, 3, 1, 5) if a == b ( print("a and b are same") ) else ( print("a and b are different") ) if a == c ( print("a and c are same") ) else ( print("a and c are different") ) 

When you run the above program, the output will be:

 a and b are different a and c are same

Set membership

You can also check relationship between two sets using the following methods:

  • isSubset(of:)This method determines whether all of the values of a set are contained in the specified set.
  • isSuperset(of:) This method determines whether a set contains all of the values in a specified set
  • isStrictSubset(of:) or isStrictSuperset(of:): This method determines whether a set is a subset or superset, but not equal to, a specified set.
  • isDisjoint(with:) This method determines whether two sets have no values in common.

Example 6: Set membership operations

 let a: Set = (1, 3, 5, 7, 9) let b: Set = (0, 3, 1, 7, 6, 8, 9, 5) print("isSubset:", a.isSubset(of: b)) print("isSuperset:", b.isSuperset(of: a)) print("isStrictSubset:", a.isStrictSubset(of: b)) print("isDisjointWith:", a.isDisjoint(with: b)) 

When you run the above program,the output will be:

 isSubset: true isSuperset: true isStrictSubset: true isDisjointWith: false 

Let's analyze methods used inside the print statement below:

  • isSubsetreturns true because the set b contains all the elements in a
  • isSupersetreturn true because b contains all of the values of a.
  • isStrictSubsetreturns true because set b contains all the element in a and both sets are not equal.
  • isDisjointWithreturns false because a and b have some values in common.

Some helpful built in Set functions & properties

1. isEmpty

This property determines if a set is empty or not. It returns true if a set does not contain any value otherwise returns false.

Example 7: How isEmpty works?

 let intSet:Set = (21, 34, 54, 12) print(intSet.isEmpty) 

When you run the program, the output will be:

 false

2. first

This property is used to access first element of a set.

Example 8: How first works?

 let intSet = (21, 34, 54, 12) print(intSet.first) 

When you run the program, the output will be:

 Optional(54)

Since set is an unordered collection, the first property does not guarantee the first element of the set. You may get other value than 54.

Similarly, you can use last property to access last element of a set.

3. insert

The insert function is used to insert/append element in the set.

Example 9: How insert works?

 var intSet:Set = (21, 34, 54, 12) intSet.insert(50) print(intSet) 

When you run the program, the output will be:

 (54, 12, 50, 21, 34)

4. reversed

This function returns the elements of a set in reverse order.

Example 10: How reversed() works?

 var intSet:Set = (21, 22, 23, 24, 25) print(intSet) let reversedSet = intSet.reversed() print(reversedSet) 

When you run the program, the output will be:

 (22, 23, 21, 24, 25) (25, 24, 21, 23, 22) 

5. count

This property returns the total number of elements in a set.

Example 11: How count works?

 let floatSet:Set = (10.2, 21.3, 32.0, 41.3) print(floatSet.count) 

When you run the program, the output will be:

 4

6. removeFirst

This function removes and returns the first value from the set.

Example 12: How removeFirst works?

 var strSet:Set = ("ab", "bc", "cd", "de") let removedVal = strSet.removeFirst() print("removed value is (removedVal)") print(strSet) 

When you run the program, the output will be:

 removed value is de ("ab", "cd", "bc") 

Benzer şekilde, removeAllbir kümeyi boşaltmak için işlevi de kullanabilirsiniz .

Ilginç makaleler...