freeCodeCamp/guide/spanish/clojure/vectors/index.md

3.6 KiB

title localeTitle
Clojure Vectors Vectores de clojure

Un vector es quizás el tipo de colección más simple en Clojure. Puedes considerarlo como una matriz en Javascript. Vamos a definir un vector simple:

(def a-vector [1 2 3 4 5]) 
 ;; Alternatively, use the vector function: 
 (def another-vector (vector 1 2 3 4 5)) 
 ;; You can use commas to separate items, since Clojure treats them as whitespace. 
 (def comma-vector [1, 2, 3, 4, 5]) 

Verás que usa corchetes, como una matriz en JS. Como Clojure, al igual que JS, se tipifica dinámicamente, los vectores pueden contener elementos de cualquier tipo, incluidos otros vectores.

(def mixed-type-vector [1 "foo" :bar ["spam" 22] #"^baz$"]) 

Agregar elementos a un vector

Puedes añadir elementos a un vector usando conj . También puedes anteponer a una lista utilizando into , pero tenga en cuenta que into está destinado a la fusión de dos vectores, por lo tanto sus argumentos debe ser vectores, y utilizando into es más lento que usar conj .

(time (conj [1 2] 3)) 
 ; => "Elapsed time: 0.032206 msecs" 
 ;    [1 2 3] 
 (time (into [1] [2 3])) 
 ; => "Elapsed time: 0.078499 msecs" 
 ;    [1 2 3] 

:rocket: ¡IDEAe!

Recuperar elementos de un vector

Puede recuperar elementos de un vector utilizando get . Esto es equivalente a usar la notación de corchete para acceder a los elementos de una matriz en muchos idiomas imperativos. Los ítems en un vector están indexados en 0, contando desde la izquierda.

var arr = [1, 2, 3, 4, 5]; 
 arr[0]; 
 // => 1 

En Clojure, esto se escribiría así:

(def a-vector [1 2 3 4 5]) 
 (get a-vector 0) 
 ; => 1 

También puede dar a get un valor predeterminado, si le da un índice que no está en la matriz.

;; the list doesn't have 2147483647 elements, so it'll return a string instead. 
 (get a-vector 2147483646 "sorry, not found!") 
 ; => "sorry, not found!" 

Convertir otras colecciones en vectores.

Las estructuras de datos no vectoriales se pueden convertir en vectores usando la función vec . Con los hashmaps, esto produce un vector 2D que contiene pares de claves y valores.

(vec '(1 2 3 4 5)) 
 ; => [1 2 3 4 5] 
 (vec {:jack "black" :barry "white"}) 
 ; => [[:jack "black"] [:barry "white"]] 

¿Cuándo usar un vector?

Se debe usar un vector en casi todos los casos si necesita una colección, ya que tienen los tiempos de acceso aleatorio más cortos, lo que facilita la recuperación de elementos de un vector. Tenga en cuenta que los vectores están ordenados. Si el orden no importa, puede ser mejor usar un juego. También tenga en cuenta que los vectores están diseñados para agregar elementos; Si necesita anteponer elementos, es posible que desee utilizar una lista.

| :point_left: Anterior | :book: Casa :book: | Siguiente :point_right: |
| Listas | Tabla de Contenidos | Hashmaps |