2017-02-19 18 views
2

Сохранение любой Common Lisp структура объекта в файл (читаемо) кажется относительно простым с чем-то вродеСохранение CLOS

(defun save-structure-object (object filename) 
    (with-open-file (stream filename :direction :output 
            :if-exists :supersede) 
    (with-standard-io-syntax (print object stream)))) 

Для экземпляра объекта Клоса, однако, пост в Make clos objects printable in lisp указывает на более сложный рецепт.

Во-первых, делает ли комментарий о более близком соединении более простой подход к сохранению экземпляра закрытого класса?

И, во-вторых, представлен ли представленный здесь код как общая утилита для печати любого закрытого экземпляра?

ответ

1

Closer to MOP позволяет избежать опасного переплетения условных условий чтения в сообщении, на которое вы ссылаетесь. Вообще говоря, использование решения OOTB, которое используют многие люди, безопаснее, чем случайный хакер - ваш собственный или чужой.

До closer-mop был вокруг, я написал (а) CLOS/MOP compatibility layer и CLOS object i/o. Я предлагаю вам использовать его вместо кода в SO, на который вы ссылаетесь.