2011-12-26 64 views
0

我想在Lisp它很簡單在c定義一個類++代碼將是這樣的類在口齒不清

class intersection{ 
    int distance; 
    int fuel; 
    char node1; 
    char node2; 
}; 

我怎麼可以這樣寫在Lisp和定義從它的對象 謝謝

+5

你讀過關於Lisp的一切嗎?你是否用Lisp做過任何基礎編碼? – Rob 2011-12-26 00:04:02

+0

這是關於CLOS書(http://www.gigamonkeys.com/book/object-reorientation-classes.html)的問題,不是一個SO問題。 – outis 2011-12-26 00:13:52

+1

@outis:Lisp(或CLOS)問題如何不*關於編程? – 2011-12-26 00:17:24

回答

2

使用Common Lisp對象系統,ANSI Common Lisp的一部分。

(defclass intersection-class() 
    ((distance :type integer) 
    (fuel  :type integer) 
    (node1 :type character) 
    (node2 :type character))) 

CL-USER 69 > (make-instance 'intersection-class) 
#<INTERSECTION-CLASS 4020002C2B> 
+0

非常感謝 – 2011-12-26 10:34:36

-1

這不是一個類;它只是一個數據結構(並且在頂部添加public:或將class替換爲struct之前不是非常有用)。您可以使用a-list來達到此目的。

我不知道你的意思是「定義它的對象」。如果你的意思是「實例化」,創建一個列表是相當簡單的:'((distance . 10) (fuel . 85) (node1 . #\a) (node2 . #\z))

-1

處理抽象一個非常簡單的方法是創建一個列表,在第一個元素的類型,並在休息的數據,我會用的東西沿着這些線路,以創建一個對象:

(list 'intersection distance fuel node1 node2) 

而且這樣的事情,如果你想有一個「構造」

(defun createIntersection (d f n1 n2) 
    (list 'intersection, d f n1 n2)) 
+4

逗號是什麼? – 2011-12-26 00:15:38

+0

哦,對不起。實際上沒有編碼6年的lisp。修復... – dutt 2011-12-26 09:14:05

1

CLOS,最簡單的形式,你會使用defclass

(defclass intersection() 
    (distance 
    fuel 
    node1 
    node2))