lisp中的类

时间:2011-12-26 00:01:32

标签: c++ common-lisp

我想在lisp中定义一个类,在c ++中非常简单,代码就是这样的

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

我如何在lisp中编写它并从中定义对象 谢谢

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

CLOS中,以最简单的形式,您使用defclass

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

答案 2 :(得分:-1)

那不是一个阶级;它只是一个数据结构(在您在顶部添加public:或用class替换struct之前,它不是非常有用的数据结构。您可以使用a-list来实现此目的。

我不知道“你从中定义对象”是什么意思。如果你的意思是“实例化它”,那么创建一个列表是相当简单的:'((distance . 10) (fuel . 85) (node1 . #\a) (node2 . #\z))

答案 3 :(得分:-1)

一种处理抽象的一种非常简单的方法是创建一个列表,其中包含第一个元素中的类型和其余的数据,我会沿着这些行使用某些东西来创建一个对象:

(list 'intersection distance fuel node1 node2)

如果你想要一个“构造函数”

,那就是这样的
(defun createIntersection (d f n1 n2)
    (list 'intersection, d f n1 n2))