Suche…


Sets deklarieren

Mengen sind ungeordnete Sammlungen eindeutiger Werte. Eindeutige Werte müssen vom gleichen Typ sein.

var colors = Set<String>()

Sie können einen Satz mit Werten deklarieren, indem Sie die Array-Literal-Syntax verwenden.

var favoriteColors: Set<String> = ["Red", "Blue", "Green", "Blue"]
// {"Blue", "Green", "Red"}

Werte in einem Set ändern

var favoriteColors: Set = ["Red", "Blue", "Green"]
//favoriteColors = {"Blue", "Green", "Red"}  

Sie können die Methode insert(_:) verwenden, um ein neues Element zu einem Set hinzuzufügen.

favoriteColors.insert("Orange")
//favoriteColors = {"Red", "Green", "Orange", "Blue"}

Sie können die remove(_:) -Methode verwenden, um ein Element aus einer Gruppe zu entfernen. Es gibt optional einen Wert zurück, der entfernt wurde, oder Null, wenn der Wert nicht in der Gruppe enthalten war.

let removedColor = favoriteColors.remove("Red")
//favoriteColors = {"Green", "Orange", "Blue"}
// removedColor = Optional("Red")

let anotherRemovedColor = favoriteColors.remove("Black")
// anotherRemovedColor = nil

Prüfen, ob ein Set einen Wert enthält

var favoriteColors: Set = ["Red", "Blue", "Green"]
//favoriteColors = {"Blue", "Green", "Red"}

Mit der contains(_:) -Methode können Sie prüfen, ob ein Set einen Wert enthält. Es wird true zurückgegeben, wenn der Satz diesen Wert enthält.

if favoriteColors.contains("Blue") {
    print("Who doesn't like blue!")
}
// Prints "Who doesn't like blue!"

Operationen an Sets durchführen

Gemeinsame Werte aus beiden Sätzen:

Sie können die intersect(_:) Methode intersect(_:) verwenden, um ein neues Set zu erstellen, das alle Werte enthält, die beiden Sets gemeinsam sind.

let favoriteColors: Set = ["Red", "Blue", "Green"]
let newColors: Set = ["Purple", "Orange", "Green"]

let intersect = favoriteColors.intersect(newColors) // a AND b
// intersect = {"Green"}

Alle Werte aus jedem Satz:

Sie können die union(_:) -Methode verwenden, um einen neuen Satz zu erstellen, der alle eindeutigen Werte aus jedem Satz enthält.

let union = favoriteColors.union(newColors) // a OR b
// union = {"Red", "Purple", "Green", "Orange", "Blue"}

Beachten Sie, dass der Wert "Grün" im neuen Set nur einmal erscheint.

Werte, die nicht in beiden Sätzen vorhanden sind:

Sie können die exclusiveOr(_:) -Methode verwenden, um einen neuen Satz zu erstellen, der die eindeutigen Werte aus einem der beiden, aber nicht aus beiden Sätzen enthält.

let exclusiveOr = favoriteColors.exclusiveOr(newColors) // a XOR b
// exclusiveOr = {"Red", "Purple", "Orange", "Blue"}

Beachten Sie, dass der Wert "Grün" im neuen Satz nicht angezeigt wird, da er in beiden Sätzen vorlag.

Werte, die nicht in einem Satz enthalten sind:

Sie können die Methode subtract(_:) verwenden, um einen neuen Satz mit Werten zu erstellen, die nicht in einem bestimmten Satz enthalten sind.

let subtract = favoriteColors.subtract(newColors) // a - (a AND b)
// subtract = {"Blue", "Red"}

Beachten Sie, dass der Wert "Grün" im neuen Satz nicht angezeigt wird, da er auch im zweiten Satz war.

Hinzufügen von Werten meines eigenen Typs zu einem Set

Um ein Set Ihres eigenen Typs zu definieren, müssen Sie Ihren Typ an Hashable

struct Starship: Hashable {
    let name: String
    var hashValue: Int { return name.hashValue }
}

func ==(left:Starship, right: Starship) -> Bool {
    return left.name == right.name
}

Jetzt kannst du eine Set von Starship(s) erstellen.

let ships : Set<Starship> = [Starship(name:"Enterprise D"), Starship(name:"Voyager"), Starship(name:"Defiant") ]

CountedSet

3,0

Swift 3 führt die Klasse CountedSet ein (die Swift-Version der Klasse NSCountedSet Objective-C).

CountedSet verfolgt, wie vom Namen vorgeschlagen, wie oft ein Wert vorhanden ist.

let countedSet = CountedSet()
countedSet.add(1)
countedSet.add(1)
countedSet.add(1)
countedSet.add(2)

countedSet.count(for: 1) // 3
countedSet.count(for: 2) // 1


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow