typestar

sort-by y into en Clojure

Una caja de discos ordenada por año y por reproducciones, y luego vertida con into.

(def crate
  [{:title "Blue Train" :year 1958 :plays 31}
   {:title "Kind of Blue" :year 1959 :plays 88}
   {:title "Maiden Voyage" :year 1965 :plays 12}])

;; sort uses compare's natural ordering on a plain collection
(println (sort [1965 1958 1959]) (sort ["rye" "ash" "elm"]))

;; sort-by takes a key fn, and a keyword is the usual one
(println (map :title (sort-by :year crate)))

;; (comp - :plays) negates the key, which flips the order
(println (map :title (sort-by (comp - :plays) crate)))

;; into pours one collection into another and keeps the target's type
(println (into [] (map :year crate))
         (into #{} [1 1 2 3])
         (into {} [[:a 1] [:b 2]]))

Cómo funciona

  1. (sort [1965 1958 1959]) usa el orden natural de compare sobre una colección simple.
  2. (sort-by :year crate) usa un keyword de clave, y (sort-by (comp - :plays) crate) la niega e invierte el orden.
  3. into conserva el tipo destino: (into #{} [1 1 2 3]) pierde el duplicado y (into {} [[:a 1] [:b 2]]) da un mapa.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
645
Tokens
121
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 104 segundos.

Escribe este fragmento

Paso 2 de 3 en Herramientas de seq; paso 17 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →