2013-03-16 45 views
1

我需要做一個函數make-數,這使得類數的一個實例:如何使使用功能類(Common Lisp的)

(defclass numbers() 
    ((x :initform 0) 
    (y :initform 0))) 

開關輸入應​​該是李這樣的:(make-numbers 2 8) 我開始:(defun make-numbers (new-x new-y) (....,但我不知道如何繼續。我一整天都試過,沒有結果。最後,我需要計算這兩個數字。

你有什麼想法嗎?謝謝。

回答

2

我建議你添加:initarg關鍵字爲你的插槽:

(defclass numbers() 
    ((x :initform 0 :initarg :x) 
    (y :initform 0 :initarg :y))) 

然後從你的函數調用make-instance

(defun make-numbers (new-x new-y) 
    (make-instance 'numbers :x new-x :y new-y)) 

這樣的話,你就不必對slot-value使用setf來初始化您的實例的插槽。

+0

謝謝,我試過類似的東西,但沒有奏效。我用'setf'和'slot-value'編寫了糟糕的代碼。 – Ats 2013-03-16 08:29:50