deftype vs defrecord


Mientras que defrecord es la forma preferida - para el caso general-en Clojure para definir una "entidad", en ClojureScript se pueden encontrar muchas más referencias a deftype, como se refleja en varios documentación .

¿Cuál es la diferencia entre ambas formas? ¿Cuál debería preferirse?

Author: Community, 2012-10-31

1 answers

deftype crea un objeto básico que implementa un protocolo.

defrecord crea un mapa persistente inmutable que implementa un protocolo.

Cuál usar depende de lo que quieras. ¿Quieres una estructura de datos completa de ClojureScript? Entonces usa un disco. ¿Solo quieres una cosa básica que no haga más que satisfacer un protocolo? Luego usa un tipo.

Los dos bits de documentación a los que hace referencia utilizan tipos porque están tratando de ilustrar protocolos en la forma más básica nivel, y los tipos tienen menos "pasando" que los registros, por así decirlo.

Sin embargo, la mayoría de los usos del mundo real de cosas similares a objetos en Clojure/ClojureScript necesitan almacenar campos de datos junto con el objeto, y para eso debe usar enfáticamente un registro, por la misma razón debe usar cualquiera de las colecciones inmutables de Clojure.

 43
Author: levand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-31 20:40:02