Operaciones con vectores en Clojure
Arma una ruta de ferry como vector y la lee por índice, por conteo y por rebanada.
;; a vector literal is written with square brackets
(def legs ["quarry" "ridge" "hollow" "ferry"])
;; conj adds to the end of a vector and hands back a new one
(def route (conj legs "depot"))
;; nth reads by position, and a vector is itself a function of its index
(println (nth route 0) "then" (route 1))
(println "legs:" (count route))
;; subvec takes a slice that shares the original storage
(println "middle:" (subvec route 1 3))
;; vectors compare by value, so an equal slice is equal
(println (= ["quarry" "ridge"] (subvec route 0 2)))
Cómo funciona
(conj legs "depot")devuelve un vector nuevo con la parada agregada al final.(nth route 0)y(route 1)leen por posición, porque un vector es una función de su índice.(subvec route 1 3)toma una rebanada, y=muestra que los vectores se comparan por valor.
Palabras clave y builtins usados aquí
conjcountdefnthprintlnsubvec
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 545
- Tokens
- 71
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 57 segundos.
Paso 1 de 3 en Colecciones; paso 4 de 27 en Fundamentos del lenguaje.