En Lisp, cada símbolo tiene una lista de propiedades ( plist ). Cuando se crea inicialmente un símbolo, su lista de propiedades está vacía. Una lista de propiedades consta de entradas donde cada entrada consta de una clave llamada indicador y un valor llamado propiedad. No hay duplicados entre los indicadores. A diferencia de las listas de asociación, las operaciones para agregar y eliminar entradas de plist alteran el plist en lugar de crear uno nuevo.
Función |
Sintaxis | Uso |
---|---|---|
obtener función | obtener indicador de símbolo y valor predeterminado opcional | busque en la plist un indicador equivalente a indicador. Si se devuelve el valor encontrado o de lo contrario se devuelve el valor predeterminado. Si no se especifica el valor predeterminado, se devuelve nil. |
función setf | setf((obtener función) propiedad/valor) | setf se usa para crear un nuevo par de valores de propiedad. |
símbolo-plist | (símbolo-plist símbolo) | symbol-plist le permite ver todas las propiedades de un símbolo |
remendar | indicador de símbolo de reparación | La función remprop se utiliza para eliminar la propiedad equivalente al indicador. |
obtener | indicador de lugar getf y valor predeterminado opcional | getf busca en la lista de propiedades almacenada en su lugar un indicador equivalente a un indicador. Si se encuentra uno, se devuelve el valor correspondiente; de lo contrario, se devuelve el valor predeterminado. Si no se especifica el valor predeterminado, se utiliza nil como valor predeterminado. |
rem. | indicador de lugar remf | remf elimina la propiedad equivalente al indicador dado del lugar dado. |
Ejemplo:
Lisp
(setf (get 'aastha 'age ) 20) ;using setf (which understands get as a place description) ;to create indicator age with value 20 of symbol aastha. (setf (get 'aastha 'occupation ) 'doctor) ;using setf (which understands get as a place description) ;to create indicator occupation with value doctor of symbol aastha. (setf (get 'aastha 'fav-book ) 'harrypotter) ;using setf (which understands get as a place description) ;to create indicator fav-book with value harrypotter of symbol aastha. (write (symbol-plist 'aastha)) ;using symbol-plist to return aastha(symbol's) plist . (terpri) (remprop 'aastha 'fav-book) ;using remprop to remove property of symbol aastha ;which has indicator fav-book (write (symbol-plist 'aastha)) (terpri) (setq x '()) (setf (getf x 'height ) 20) ;using setf along with getf to set property of ;indicator height as 20 at place x (write(eq(getf x 'height) 20)) ;using eq to check if property of ;indicator height at place x is 20 (terpri) (remf x 'height) ;using remf to remove property ;of indicator height at place x (write(eq(getf x 'height) 20))
Producción:
(FAV-BOOK HARRYPOTTER OCCUPATION DOCTOR AGE 20) (OCCUPATION DOCTOR AGE 20) T NIL
Publicación traducida automáticamente
Artículo escrito por umakwork1106 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA