Conjuntos en Scala
Un conjunto de aperturas de ajedrez estudiadas, consultado por pertenencia y cruzado con un repertorio rival.
// a Set literal keeps one copy of each element, in no fixed order
val studied: Set[String] = Set("Sicilian", "London", "Caro-Kann")
// a Set is a function from element to Boolean, so applying it
// asks about membership exactly like contains does
val knowsLondon: Boolean = studied("London")
val knowsBenoni: Boolean = studied.contains("Benoni")
// + and - build new sets, and adding a duplicate changes nothing
val plusBenoni: Set[String] = studied + "Benoni"
val minusLondon: Set[String] = studied - "London"
val stillThree: Boolean = (studied + "London").size == 3
// union gathers the elements of both sets
val opponent: Set[String] = Set("London", "Bird", "Sicilian")
val eitherPlayer: Set[String] = studied.union(opponent)
// intersect keeps only the ones both sets have
val bothPlayers: Set[String] = studied.intersect(opponent)
Cómo funciona
Set("Sicilian", "London", "Caro-Kann")guarda una sola copia de cada apertura, sin orden fijo.studied("London")aplica el conjunto como función aBoolean, la misma pregunta quecontainshace por nombre.studied + "Benoni"ystudied - "London"crean conjuntos nuevos;unionjunta ambos eintersectdeja los comunes.
Palabras clave y builtins usados aquí
val
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 840
- Tokens
- 122
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 98 segundos.
Paso 3 de 3 en Colecciones; paso 12 de 27 en Fundamentos del lenguaje.