Zoeken…


Sets declareren

Sets zijn ongeordende verzamelingen van unieke waarden. Unieke waarden moeten van hetzelfde type zijn.

var colors = Set<String>()

U kunt een set met waarden declareren met behulp van de letterlijke matrixsyntaxis.

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

Waarden in een set wijzigen

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

U kunt de methode insert(_:) gebruiken om een nieuw item aan een set toe te voegen.

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

U kunt de methode remove(_:) gebruiken om een item uit een set te verwijderen. Het retourneert een optionele waarde die is verwijderd of nul als de waarde niet in de set was.

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

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

Controleren of een set een waarde bevat

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

U kunt de methode contains(_:) gebruiken om te controleren of een set een waarde bevat. Het zal waar teruggeven als de set die waarde bevat.

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

Bewerkingen uitvoeren op sets

Gemeenschappelijke waarden uit beide sets:

U kunt de methode intersect(_:) gebruiken om een nieuwe set te maken met alle gemeenschappelijke waarden voor beide sets.

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

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

Alle waarden van elke set:

U kunt de methode union(_:) gebruiken om een nieuwe set te maken met alle unieke waarden uit elke set.

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

Merk op hoe de waarde "Groen" slechts eenmaal in de nieuwe set verschijnt.

Waarden die niet in beide sets bestaan:

U kunt de methode exclusiveOr(_:) gebruiken om een nieuwe set te maken met de unieke waarden van beide, maar niet beide sets.

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

Merk op dat de waarde "Groen" niet verschijnt in de nieuwe set, omdat deze in beide sets was.

Waarden die niet in een set voorkomen:

U kunt de methode subtract(_:) gebruiken om een nieuwe set te maken met waarden die niet in een specifieke set voorkomen.

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

Merk op hoe de waarde "Groen" niet verschijnt in de nieuwe set, omdat het ook in de tweede set was.

Waarden van mijn eigen type toevoegen aan een set

Om een Set van uw eigen type te definiëren, moet u uw type aanpassen aan Hashable

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

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

Nu kunt u een Set Starship(s)

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

CountedSet

3.0

Swift 3 introduceert de CountedSet klasse (het is de Swift-versie van de NSCountedSet Objective-C-klasse).

CountedSet houdt, zoals voorgesteld door de naam, bij hoe vaak een waarde aanwezig is.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow