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

3.5 KiB

title localeTitle
Clojure Vectors Vetores de Clojure

Um vetor é talvez o tipo mais simples de coleção no Clojure. Você pode pensar nisso como uma matriz em JavaScript. Vamos definir um vetor simples:

(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]) 

Você verá que ele usa colchetes, assim como uma matriz em JS. Como o Clojure, como o JS, é digitado dinamicamente, os vetores podem conter elementos de qualquer tipo, incluindo outros vetores.

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

Adicionando itens a um vetor

Você pode acrescentar itens a um vetor usando conj . Você também pode preceder a uma lista usando into , mas note que into destina-se a fusão de dois vetores, para que ambos os seus argumentos devem ser vetores, e usando into é mais lento do 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: IDEOne isso!

Recuperando itens de um vetor

Você pode recuperar itens de um vetor usando get . Isso é equivalente a usar a notação de colchetes para acessar itens em uma matriz em muitas linguagens imperativas. Itens em um vetor são indexados em 0, contados a partir da esquerda.

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

No Clojure, isso seria escrito da seguinte forma:

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

Você também pode dar get um valor padrão, se você dar-lhe um índice que não está na 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!" 

Convertendo outras coleções em vetores

Estruturas de dados não vetoriais podem ser convertidas em vetores usando a função vec . Com hashmaps, isso produz um vetor 2D contendo pares de chaves e valores.

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

Quando usar um vetor?

Um vetor deve ser usado em quase todos os casos, se você precisar de uma coleção, porque eles têm os menores tempos de acesso aleatório, o que facilita a recuperação de itens de um vetor. Note que os vetores são ordenados. Se a ordem não importa, pode ser melhor usar um conjunto. Observe também que os vetores são projetados para anexar itens; Se você precisar inserir os itens, talvez queira usar uma lista.

| :point_left: Anterior | :book: Casa :book: | Próximo :point_right: |
| Listas | Índice | Hashmaps |