2012-05-25 12 views
11

¿Hay algo como struct-map para los registros? Si no, ¿debería usar una estructura (los documentos no recomiendan el uso de estructuras)?¿Cómo llenar un registro de Clojure desde un mapa?

¿Quizás estoy haciendo algo completamente equivocado? Tengo una función bastante compleja que actualmente toma un mapa de opciones. Estoy tratando de aclarar qué valores de opción son aceptables/usados ​​(reemplazándolo con un registro). Y ahora quiero interconectar eso con el código que tiene esta información en los mapas (y que contiene un superconjunto de los datos en el registro).

Respuesta

19

No se recomienda utilizar registros simplemente para "documentación": los mapas antiguos simples son más flexibles, simples y fáciles. Para la documentación, puede simplemente agregar un docstring o un comentario, o crear una función como (defn make-whatever [thing1 thing2]).

Si aún desea un registro, tiene un par de opciones dependiendo de si está utilizando la versión 1.3 de clojure o superior. Si es así, (defrecord Whatever ...) también define una función map->Whatever, y una función ->Whatever que toma argumentos posicionales. De lo contrario, puede escribir (into (Whatever. nil nil nil) some-map) (pasando el número correcto de nils para el tipo de registro).

Cuestiones relacionadas