2012-07-13 18 views
5

en la alegría de Clojure se establece que:La redefinición de los campos de un registro en Clojure

incluso se puede redefinir un registro si desea tener diferentes campos que le da el rendimiento compilado de Java dinámicamente

¿Puede alguien darme una pista sobre cómo se hace esto?

Gracias

+0

Qué capítulo/página? – Kevin

+0

@Kevin Página 191 - http://www.manning.com/fogus/Sample-Ch9.pdf :) –

+0

¿Quiere decir cómo se hace la redefinición de un registro? – Ankur

Respuesta

6

En el capítulo 9 que caminan a través de la definición del protocolo FIXO y extensiones a la vez un registro TreeNode y TreeNode tipo. Mostramos que la construcción de la implementación de FIXO se puede hacer de forma dinámica. De hecho, comenzamos con un registro TreeNode, ampliamos el protocolo FIXO y luego definimos un tipo TreeNode y lo extendimos en su lugar a FIXO. Si bien no cambiamos el número de campos, sí cambiamos el tipo y, una vez extendido, todas las llamadas a través del protocolo FIXO se resuelven al nuevo tipo (también tuvimos que redefinir la extensión FIXO a nil ya que devolvía el antiguo registro) basado NodeType.

es probable que no haría esto en código que se desplegaría, pero es una técnica útil cuando se experimenta. Trate de caminar a través de la sección de FIXO y comprobar los tipos a medida que avanza.

Cuestiones relacionadas