Ricerca…


Dichiarazione di insiemi

Gli insiemi sono raccolte non ordinate di valori unici. I valori unici devono essere dello stesso tipo.

var colors = Set<String>()

È possibile dichiarare un set con valori utilizzando la sintassi letterale dell'array.

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

Modifica dei valori in un set

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

È possibile utilizzare il metodo insert(_:) per aggiungere un nuovo elemento in un set.

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

È possibile utilizzare il metodo remove(_:) per rimuovere un elemento da un set. Restituisce il valore contenente facoltativo che è stato rimosso o zero se il valore non era nel set.

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

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

Verifica se un set contiene un valore

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

È possibile utilizzare il metodo contains(_:) per verificare se un set contiene un valore. Restituirà vero se il set contiene quel valore.

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

Esecuzione di operazioni sui set

Valori comuni di entrambi i set:

È possibile utilizzare il metodo intersect(_:) per creare un nuovo set contenente tutti i valori comuni a entrambi i set.

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

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

Tutti i valori di ogni set:

È possibile utilizzare il metodo union(_:) per creare un nuovo set contenente tutti i valori univoci di ciascun set.

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

Si noti come il valore "Verde" appare solo una volta nel nuovo set.

Valori che non esistono in entrambi i set:

È possibile utilizzare il metodo exclusiveOr(_:) per creare un nuovo set contenente i valori univoci da entrambi, ma non da entrambi.

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

Nota come il valore "Verde" non appare nel nuovo set, poiché era in entrambi i set.

Valori che non sono in un set:

È possibile utilizzare il metodo subtract(_:) per creare un nuovo set contenente valori che non si trovano in un set specifico.

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

Notare come il valore "Verde" non appare nel nuovo set, poiché era anche nel secondo set.

Aggiunta di valori del mio tipo a un Set

Per definire un Set del tuo tipo devi conformare il tuo tipo a Hashable

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

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

Ora puoi creare un Set di Starship(s)

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

CountedSet

3.0

Swift 3 introduce la classe CountedSet (è la versione Swift della NSCountedSet Objective-C NSCountedSet ).

CountedSet, come suggerito dal nome, tiene traccia di quante volte è presente un valore.

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow