¿Cómo puedo crear un 'clase' en Clojure?
(defrecord Objeto [prop1 prop2 propN])
Para hacer uso de esta 'clase' escribimos lo siguiente:
(def miObjeto "primerValor" "segundoValor" "otroMas")
Ejemplo. Crear una 'clase' Fecha, con tres propiedades: dia,mes, y año
;;importamos la librería java.util.Scanner para introducir datos
(import '(java.util Scanner))
(def entrada(Scanner. *in*))
;;creamos una interface para mostrar los valores tecleados
(defprotocol Servicio
(verFecha[this]))
;;creamos la 'clase' Fecha e implementamos la interface Servicio
(defrecord Fecha[dia mes anyo]
Servicio
(verFecha[this](println "Fecha: { dia:"dia" -mes: "mes" -anyo:"anyo"}")))
;; probamos
(try
(def miFecha(Fecha. "23" "agosto" "1943"))
(verFecha miFecha)
(println "Dia:")
(def dia(.nextLine entrada))
(println "Mes:")
(def mes(.nextLine entrada))
(println "Anyo:")
(def anyo(.nextLine entrada))
(def miFecha2(Fecha. dia mes anyo))
(verFecha miFecha2)
(catch Exception e (str "ha ocurrido una excepcion: " (.getMessage e))))
Ejecutamos:
java -jar clojure-1.6.0.jar claseFecha.clj
(defrecord Objeto [prop1 prop2 propN])
Para hacer uso de esta 'clase' escribimos lo siguiente:
(def miObjeto "primerValor" "segundoValor" "otroMas")
Ejemplo. Crear una 'clase' Fecha, con tres propiedades: dia,mes, y año
;;importamos la librería java.util.Scanner para introducir datos
(import '(java.util Scanner))
(def entrada(Scanner. *in*))
;;creamos una interface para mostrar los valores tecleados
(defprotocol Servicio
(verFecha[this]))
;;creamos la 'clase' Fecha e implementamos la interface Servicio
(defrecord Fecha[dia mes anyo]
Servicio
(verFecha[this](println "Fecha: { dia:"dia" -mes: "mes" -anyo:"anyo"}")))
;; probamos
(try
(def miFecha(Fecha. "23" "agosto" "1943"))
(verFecha miFecha)
(println "Dia:")
(def dia(.nextLine entrada))
(println "Mes:")
(def mes(.nextLine entrada))
(println "Anyo:")
(def anyo(.nextLine entrada))
(def miFecha2(Fecha. dia mes anyo))
(verFecha miFecha2)
(catch Exception e (str "ha ocurrido una excepcion: " (.getMessage e))))
Ejecutamos:
java -jar clojure-1.6.0.jar claseFecha.clj
Comentarios
Publicar un comentario