Sök…


Förklarande uppsättningar

Uppsättningar är oordnade samlingar av unika värden. Unika värden måste vara av samma typ.

var colors = Set<String>()

Du kan förklara en uppsättning med värden med hjälp av matris bokstavssyntax.

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

Ändra värden i en uppsättning

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

Du kan använda metoden insert(_:) för att lägga till ett nytt objekt i en uppsättning.

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

Du kan använda metoden ta remove(_:) för att ta bort ett objekt från en uppsättning. Det returnerar valfritt innehållande värde som togs bort eller noll om värdet inte fanns i uppsättningen.

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

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

Kontrollera om en uppsättning innehåller ett värde

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

Du kan använda metoden contains(_:) för att kontrollera om en uppsättning innehåller ett värde. Det kommer att gälla om uppsättningen innehåller det värdet.

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

Utföra operationer på uppsättningar

Vanliga värden från båda uppsättningarna:

Du kan använda intersect(_:) -metoden för att skapa en ny uppsättning som innehåller alla värden som är gemensamma för båda uppsättningarna.

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

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

Alla värden från varje uppsättning:

Du kan använda union(_:) för att skapa en ny uppsättning som innehåller alla unika värden från varje uppsättning.

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

Lägg märke till hur värdet "Grönt" bara visas en gång i den nya uppsättningen.

Värden som inte finns i båda uppsättningarna:

Du kan använda metoden exclusiveOr(_:) för att skapa en ny uppsättning som innehåller de unika värdena från endera men inte båda uppsättningarna.

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

Lägg märke till hur värdet "Grönt" inte visas i den nya uppsättningen, eftersom det fanns i båda uppsättningarna.

Värden som inte finns i en uppsättning:

Du kan använda subtract(_:) för att skapa en ny uppsättning som innehåller värden som inte finns i en specifik uppsättning.

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

Lägg märke till hur värdet "Grönt" inte visas i den nya uppsättningen, eftersom det också var i den andra uppsättningen.

Lägga till värden av min egen typ i en uppsättning

För att definiera en Set av din egen typ måste du anpassa din typ till 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 kan du skapa en Set av Starship(s)

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

CountedSet

3,0

Swift 3 introducerar klassen CountedSet (det är Swift-versionen av klassen NSCountedSet -C).

CountedSet, som föreslagits av namnet, håller reda på hur många gånger ett värde finns.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow