我正在寫爲反轉說類的一個對象的列表元素的CLOS類的功能。Lisp中的實例變量?
我有一個方法將返回反向列表,但我如何使它將對象的列表設置爲該列表?我可以在存儲列表的函數中使用實例變量,然後將該元素設置爲該變量?還是有更簡單的方法?
這裏的方法,因爲它現在是:
(defun my-reverse (lst)
(cond ((null lst) ‘())
(t (append (my-reverse (cdr lst)) (car lst)))))
它傳遞的對象是(L我的列表),然後訪問將是(我的列表-LS L)。
編輯:認識到cons
不適用於2個列表。
EDIT2:我認爲正確的代碼是:
(defun my-reverse (l my-list)
(cond ((null (my-list-ls l) ‘())
(t (setf (my-list-ls l) (append (my-reverse (cdr (my-list-ls l)))
(car (my-list-ls l)))))))
這就是我通過設置參數(l my-list)所做的事情。示例代碼是用於使用任何列表進行處理,我的問題是使函數將結果保存在my-list l的列表元素中。 – Portaljacker
當前示例代碼中的函數正在接收一個列表,而不是CLOS對象。要麼你誤解你在做什麼,要麼你的示例代碼與你的問題根本不相關。一般來說,關於你的問題,作爲作者的每個訪問者函數都是一個SETF可能的地方。如果沒有這樣的訪問器,'(slot-value slot)'也是一個SETF能夠的地方。 –
'(插槽值對象'插槽)',當然。 –