¿Puede desestructurar un parámetro de función pero todavía tiene el original disponible para su uso? La forma en que lo estoy haciendo ahora es simplemente usando un formulario let
dentro del cuerpo de la función, pero me pregunto si hubo una forma más tersa de hacerlo.Desestructurar el parámetro de una función Clojure mientras se mantiene el valor original.
22
A
Respuesta
25
parece que :as
obras para las funciones también:
con vector
(defn test [[x y :as v]]
{:x x :y y :v v})
(test [1 2 3 4])
=> {:x 1 :y 2 :v [1 2 3 4]}
con hash-map
(defn test2 [{x :x y :y :as m}]
{:x x :y y :m m})
(test2 {:x 1 :y 2 :z 3})
=> {:x 1 :y 2 :m {:x 1 :y 2 :z 3}}
Ver esta entrada del blog excelente: http://blog.jayfields.com/2010/07/clojure-destructuring.html
Cuestiones relacionadas
- 1. Pasando una lista mientras conserva el original
- 2. Agregar marco de datos mientras mantiene el orden original, de manera simple
- 3. Valor predeterminado para el parámetro de función?
- 4. Guardar una única entidad CoreData (no todo el contexto) Mientras se mantiene la funcionalidad NSFetchedResultController
- 5. Clojure: simplemente devuelva el valor
- 6. Solo se desplaza dentro de un div, mientras que el sitio web se mantiene posicionado
- 7. cómo desestructurar un mapa como clave y valor
- 8. ¿Se puede utilizar el resultado de una llamada de función como valor de parámetro predeterminado?
- 9. Cómo desestructurar un vector para utilizarlo como argumento de función
- 10. Obtener el valor de una función
- 11. En Clojure, ¿cómo desestructurar todas las teclas de un mapa?
- 12. Jquery: efecto mousedown (mientras clic izquierdo se mantiene pulsado)
- 13. Colección clave/valor que mantiene el orden
- 14. ¿Se mantiene "Todo el idioma siempre disponible" en caso de Clojure?
- 15. apague el registro de SQL mientras mantiene los ajustes. ¿ERROR?
- 16. ¿Es posible cambiar el valor del parámetro de la función?
- 17. JQuery: Obtenga el valor de entrada original
- 18. jquery clone select no mantiene el valor
- 19. El valor de una lista vacía en el parámetro de función, ejemplo aquí
- 20. Leer y escribir en un archivo mientras mantiene el bloqueo
- 21. ¿Se mantiene el contador For-Loop?
- 22. Tratar macro Clojure como una función
- 23. ¿Cómo realizo una sustitución Perl en una cadena mientras mantengo el original?
- 24. cómo cambiar "this.ShowInTaskBar" para un "form.ShowDialog()" mientras se mantiene abierto?
- 25. SVN: cambio de nombre en el navegador Repo mientras se mantiene la Copia de trabajo sincronizada
- 26. valor predeterminado de parámetro de función
- 27. Capturando el valor de retorno "original" de with-out-str
- 28. ¿Por qué el grupo de clojure no siempre mantiene el orden?
- 29. Cómo cambiar el tamaño de un UIImage mientras se mantiene su relación de aspecto
- 30. Clojure ciclo Mientras
Creo dejó, fn, defn, etc. todos usan s ame la sintaxis de desestructuración – JohnJ
@JohnJ: Sí, para hacer que la semántica desestructurante sea consistente. – Ankur
@JohnJ Eso es "verdad". Al principio estaba muy confundido en la publicación del blog porque solo usa "lets" como ejemplos. La diferencia entre let y fn/defn es que usa una forma vinculante. –