tutorial react google closure clojure clojurescript

react - clojurescript tutorial



deftype vs defrecord (1)

Si bien 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 la documentation .

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


deftype crea un objeto deftype que implementa un protocolo.

defrecord crea un mapa persistente inmutable que implementa un protocolo.

Cuál usar depende de lo que quieras. ¿Desea una estructura de datos ClojureScript completa? A continuación, utilice un registro. ¿Simplemente quieres algo básico que no haga más que cumplir un protocolo? A continuación, utilice un tipo.

Los dos bits de documentación a los que hace referencia utilizan tipos porque intentan ilustrar los protocolos en el nivel más básico, y los tipos tienen menos "en marcha" que los registros, por así decirlo.

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