2012-07-13 13 views
5

nella gioia di Clojure si afferma che:Ridefinire i campi di un record in Clojure

si può anche ridefinire un record se lo si desidera avere diversi campi dandovi le prestazioni compilato di Java dinamicamente

Qualcuno può indurmi a capire come è fatto?

Grazie

+0

quale capitolo/pagina? – Kevin

+0

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

+0

Vuoi dire come è stata ridefinita una registrazione? – Ankur

risposta

6

Nel capitolo 9 abbiamo a piedi attraverso la definizione del protocollo FIXO e le estensioni sia un record TreeNode e TreeNode tipo. Dimostriamo che la realizzazione dell'implementazione di FIXO può essere eseguita in modo dinamico. Infatti, iniziamo con un record TreeNode, estendiamo il protocollo FIXO e quindi definiamo un tipo TreeNode ed estendiamo invece FIXO. Anche se non cambiamo il numero di campi, cambiamo il tipo stesso e una volta esteso, tutte le chiamate attraverso il protocollo FIXO si risolvono nel nuovo tipo (abbiamo anche dovuto ridefinire l'estensione FIXO a nil mentre restituiva il vecchio record- basato NodeType.

non ci si potrebbe fare questo nel codice che si desidera implementare, ma è una tecnica utile quando si sperimenta. Provate a camminare attraverso la sezione FIXO e controllare i tipi, come si va.

Problemi correlati