Created
March 18, 2013 09:57
-
-
Save anonymous/5186097 to your computer and use it in GitHub Desktop.
Codigo de la entrada en el blog javierneirasanchez.blogspot.com
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; Se define en un modulo una funcion polimorfica en funcion del tipo de los *dos argumentos* | |
;; La funcion puede ser polimorfica en funcion de cualquier combinacion de cualquiera | |
;; de los valores (no solo su tipo) de sus parametros | |
(ns modulo1) | |
(defmulti write (fn [writer data] [(type writer) (:type data)]) | |
;; En otro modulo que importa la definicion anterior generica de write | |
(ns modulo2) | |
(defmethod modulo1/writer [java.io.FileWriter :user] [writer user] | |
(comment codigo especifico usando el FileWriter y teniendo en cuenta | |
que los datos son del tipo usuario)) | |
(defmethod modulo1/writer [java.io.FileWriter :generic] [w u] | |
(comment codigo que escibe los datos de una entidad generica)) | |
(defmethod [java.io.FileWriter :session] [writer session] | |
(comment mas codigo)) | |
;; En otro modulo o en el mismo | |
(defmethod modulo1/writer [SQLWriter :user] [w u] | |
(codigo que escibe los datos del usuario en la db)) | |
;; Se puede indicar cual es el metodo que se usa por defecto si no hay uno | |
;; definido para unos valores particulares y cual es el preferido si existen | |
;; dos definiciones de metodos que chocan |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment