Buscar..


Declarar Conjuntos

Los conjuntos son colecciones desordenadas de valores únicos. Los valores únicos deben ser del mismo tipo.

var colors = Set<String>()

Puede declarar un conjunto con valores utilizando la sintaxis literal de la matriz.

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

Modificar valores en un conjunto.

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

Puede utilizar el método de insert(_:) para agregar un nuevo elemento a un conjunto.

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

Puede usar el método remove(_:) para eliminar un elemento de un conjunto. Devuelve el valor que contiene opcional que se eliminó o nulo si el valor no estaba en el conjunto.

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

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

Comprobando si un conjunto contiene un valor

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

Puede usar el método de contains(_:) para verificar si un conjunto contiene un valor. Devolverá verdadero si el conjunto contiene ese valor.

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

Realización de operaciones en sets.

Valores comunes de ambos conjuntos:

Puede usar el método intersect(_:) para crear un nuevo conjunto que contenga todos los valores comunes a ambos conjuntos.

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

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

Todos los valores de cada conjunto:

Puede usar el método de union(_:) para crear un nuevo conjunto que contenga todos los valores únicos de cada conjunto.

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

Observe cómo el valor "Verde" solo aparece una vez en el nuevo conjunto.

Valores que no existen en ambos conjuntos:

Puede usar el método exclusiveOr(_:) para crear un nuevo conjunto que contenga los valores únicos de cualquiera de los dos conjuntos.

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

Observe cómo el valor "Verde" no aparece en el nuevo conjunto, ya que estaba en ambos conjuntos.

Valores que no están en un conjunto:

Puede usar el método subtract(_:) para crear un nuevo conjunto que contenga valores que no estén en un conjunto específico.

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

Observe que el valor "Verde" no aparece en el nuevo conjunto, ya que también estaba en el segundo conjunto.

Agregando valores de mi propio tipo a un conjunto

Para definir un Set de su propio tipo, debe ajustar su 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
}

Ahora puedes crear un Set de Starship(s)

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

CountedSet

3.0

Swift 3 presenta la clase CountedSet (es la versión Swift de la NSCountedSet Objective-C).

CountedSet, como lo sugiere el nombre, realiza un seguimiento de cuántas veces está presente un valor.

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow