Swift Language
sets
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
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