Las listas de propiedades son parecidas a los registros en otros lenguajes. Lo que se llama "campos" para otros lenguajes en common lisp son propiedades.
Veamos unos ejemplos:
> (setf pelota '(:color "blanco" :diametro 25 :material "cuero"))
Pelota tiene distintas propiedades como color diámetro y material. Veamos otro:
> (setf mi-moto '(:marca "Zanella" :modelo "Custom Patagonian Eagle" :cilindrada 150 :kilometros 4000 :precio 12000))
(:MARCA "Zanella" :MODELO "Custom Patagonian Eagle" :CILINDRADA 150 :KM 4000 :PRECIO 12000)
Para obtener el valor de una propiedad, usamos la función getf:
> (getf mi-moto :modelo)
"Custom Patagonian Eagle"
La función getf nos devuelve el valor de la propiedad, para ser utilizadas como argumento de otra función o almacenarse en un símbolo (de todas formas, al almacenarse termina usándose como argumento de otra función: "setf")
> (setf modelo (getf mi-moto :modelo))
En modelo queda el valor "Custom Patagonian Eagle".
Para modificar un valor de la lista de propiedades usamos "setf" con "getf" a la vez. Supongamos que queremos modificar el precio de "mi-moto":
> (setf (getf mi-moto :precio) 13000)
13000
Ok! :-P Si consultamos ahora nuestra lista de propiedades, veremos:
> mi-moto
(:MARCA "Zanella" :MODELO "Custom eagle" :CILINDRADA 150 :KM 4000 :PRECIO 13000)
Se puede guardar cada lista de propiedades en una lista, para tener una base de datos sencilla, que podría guardarse en un archivo, y tener funciones para búsqueda y filtros, etc. Las posibilidades son infinitas.
No hay comentarios:
Publicar un comentario