diff --git a/guide/english/swift/sets/index.md b/guide/english/swift/sets/index.md new file mode 100644 index 0000000000..37ff331f77 --- /dev/null +++ b/guide/english/swift/sets/index.md @@ -0,0 +1,90 @@ +--- +title: Sets +--- + +# Sets + +Sets are a collection type that stores an **unordered list** of **distinct** values of a given type. They are useful when the order of your elements do not matter, and also when you want to ensure that an element only occurs once. + +### Initialization + +Creating an empty Set... +```swift +var integerSet = Set() +``` + +Using Arrays to Create Sets... +```swift +let posSet: Set = [0,1,2,3,4,5] +let negSet: Set = [-1,-2,-3,-4,-5] +``` + +### Set Modification + +Insert and Remove an element from a set. + +```swift +integerSet.insert(10312018) //insert the integer "10312018" into the set +integerSet.remove(10312018) //remove the integer "10312018" from the set +``` + +### Set Operations + +There are four fundamental set operations that can be performed on sets: union, intersection, subtraction, and symmetric difference + +_Note_: The **sorted()** method used in the proceeding code, returns an array of the the elements of the set sorted in ascending order. It is primarily used in the below code for clarity. + +**_Union_:** combines the elements of two sets + +```swift +integerSet = integerSet.union(posSet) // performs a union operation that returns a new set +integerSet.formUnion(negSet) // performs a union operation that modifies the current set + +integerSet.sorted() // [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] +``` + +**_Intersection_:** forms a set from only the common values of two sets + +```swift +let oddSet: Set = [1,3,5,9] +let _ = integerSet.intersection(oddSet).sorted(); // [1,3,5] +``` + +**_Symmetric Difference_:** forms a set from the values that are not common in both sets. +```swift +let inbetweenSet: Set = [-4,-3,-2,-1,0,1,2,3,4] +let _ = integerSet.symmetricDifference(inbetweenSet).sorted() // [-5,5] +``` + +**_Subtraction_:** : forms a set with values not in the specified set. +```swift +integerSet.subtract(negSet) +integerSet.sorted() // [0, 1, 2, 3, 4, 5] +``` + +### Iterating Over a Set + +You can iterate over a set by using a for-in loop... +```swift +var showSet = ""; +for item in integerSet { + showSet += "\(item) " +} +print(showSet) +``` +The output for the above code is going to be along the lines of "1 5 4 3 0 2"... which of course is not in order. To iterate over a set in an orderly fashion use the sorted() method... + +```swift +showSet = ""; +for item in integerSet.sorted() { + showSet += "\(item) " +} +print(showSet) +``` +Output: "0 1 2 3 4 5" + + +#### More Information: + +* [The Swift Programming Language](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID484) +